У меня есть модели, как это: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
Как я могу выбрать все Discussion
через примыкала :special_comment
«автора» ассоциации. Эффективно я хочу сделать что-то вроде:
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: нет такого столбца: discussion.author: SELECT «обсуждения». * FROM »обсуждения« INNER JOIN »комментарии« ON comments.discussion_id = discussion.id ГДЕ («обсуждения». «Автор» = 'poopface')
Но это должно быть WHERE ("comments"."author" = 'poopface')
Спасибо!
Что такое has_one для определения «special_comment», а не других комментариев? has_one используется вместо assign_to, где ваш внешний ключ находится на другом объекте. Это ваша ситуация? –