我有这样的模特:
class Discussion < ActiveRecord::Base
has_many :comments
has_one :special_comment, :class_name => "Comment"
end
class Comment < ActiveRecord::Base
belongs_to :discussion
# contains author
end
如何通过其相邻的Discussion
'作者'关联选择每个:special_comment
。实际上,我想做一些事情:
select * from discussions
inner join comments on comments.discussion_id=discussion.id
where comments.author = 'poopface'
我接近这个:
Discussion.find(:all,:conditions =&gt; {:author =&gt;'poopface'},:joins =&gt;:special_comment) ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:no such column:discussion.author:SELECT“discussion”。* FROM“discussion”INNER JOIN“comments”ON comments.discussion_id = discussion.id WHERE(“discussion”。“author” ='poopface')
但它应该是WHERE ("comments"."author" = 'poopface')
谢谢!
答案 0 :(得分:2)
试试这个:
Discussion.all(:conditions => {:comments=> {:author => "blah"}},
:joins => :comments)
OR
Discussion.all(:conditions => ["comments.author = ?", "blah"],
:joins => :comments)
注意:您可以在示例代码中使用更好的作者姓名。
答案 1 :(得分:0)
假设您的“注释”表中有一些外键,您的has_one正在引用...
Discussion.find(:all, :conditions => {:comments=>{:author => 'blah'}},
:joins => :special_comment)
将为您提供所有讨论,其中special_comment由'blah'创作。
Discussion.find(:all, :conditions => {:comments=>{:author => 'blah'}},
:joins => :comments)
会给你所有的讨论,他们有任何评论由'blah'撰写。