从Rails 2到Rails 3我从来没有努力去理解某些东西(侧面的社论).
无论如何,在Rails 3应用程序中,我有以下模型…
用户:
has_many :answers
回答:
belongs_to :user belongs_to :question scope :user_answers,where (:user_id => current_user.id)
题:
has_many :answers scope :qs_w_user_ans,joins(:questions) & (:user_answers)
我得到的当前错误是“undefined方法`includes_values’for:user_answers:Symbol”
有一个问题ID和一个用户标识.每个答案都有question_id和user_id.
我需要用户的答案通过ids适当链接的问题.你能告诉我我的车型是错的吗?
谢谢.
解决方法
The&运算符(我认为最近不推荐使用)是合并的别名,它允许您基本上合并范围. :user_answers不是范围,所以你不能使用这个方法.
正如Dinatih指出的,你可以多次呼叫联接.在这种情况下,为每个连接创建不同的范围不会买你太多,所以他的方法适合你的情况.
更新
对不起我的误会. :user_answers是一个范围,但是在这种情况下您没有正确调用它.你想要以下内容:
scope :qs_w_user_ans,joins(:questions) & Answer.user_answers
在我链接的文章中,发布在Post上的范围与范围合并:发布在User:
scope :published,lambda { joins(:posts).group("users.id") & Post.published }