本文介绍了导轨 - 使用:选择(不同)有:的has_many:通过联想产生无效的SQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
User
has_many :posts
has_many :post_tags, :through => :posts
PostTag
belong_to :post
belongs_to :tag
scope :distincttag, :select => ('distinct post_tags.tag_id')
使用Rails 3.0.4,我得到无效的SQL:SELECT post_tags *,不同的tag_id ...
with Rails 3.0.4, i get invalid SQL:SELECT post_tags.*, distinct tag_id...
至少一个其他人遇到了同样的问题: HTTP://www.ruby-forum。 COM /主题/ 484938
at least one other person experienced the same problem: http://www.ruby-forum.com/topic/484938
功能或一个错误?
感谢
推荐答案
看起来不像正确的事情放在一个范围。
Does not look like the right thing to put on a scope.
也许你正在试图做到这一点:
Maybe you are trying to accomplish this:
class PostTag < ...
belong_to :post
belongs_to :tag
def distincttag
find(:all, :select => 'distinct tag_id')
end
end
编辑:现在,我知道你需要什么:
now that I know what you need:
User
has_many :posts
has_many :post_tags, :through => :posts, :select => 'distinct tags.*'
# or, if you are not worried about database overhead:
has_many :post_tags, :through => :posts, :uniq => true
参考: http://blog.hasmanythrough.com/2006/ 5/6 /通获得-uniq的
这篇关于导轨 - 使用:选择(不同)有:的has_many:通过联想产生无效的SQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!