本文介绍了导轨 - 使用:选择(不同)有:的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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-07 02:12