找到我的产品型号是这样的:的ActiveRecord通过HAS_ONE关联子属性
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
我如何通过其邻接:special_comment
“作者”联想选择每Discussion
。有效地我想要做的事,如:
select * from discussions
inner join comments on comments.discussion_id=discussion.id
where comments.author = 'poopface'
我得到的东西接近这个:
Discussion.find(:全部:条件=> {:作者=> 'poopface'} ,:joins =>:special_comment) ActiveRecord :: StatementInvalid:SQLite3 :: SQLException:no such column:discussions.author:SELECT“discussions”。* FROM“discussion”INNER JOIN“comments”ON comments.discussion_id = discussions.id WHERE(“讨论”,“作者”='poopface')
但应WHERE ("comments"."author" = 'poopface')
谢谢!
has_one用于识别'special_comment'而不是其他评论?使用has_one而不是belongs_to,其中您的外键位于另一个对象上。这是你的情况吗? – 2010-07-20 03:07:57