我设置了以下关联
class bookinghdr
belongs_to :agent
end
class bookingitem
belongs_to :bookinghdr, :include => agent
end
所以我希望能够做到以下几点:
named_scope :prepay, :include=>["bookinghdr"], :conditions => ["bookinghdr.agent.agenttype = 'PP'"]
并在我的控制器中执行:
b = Bookingitem.prepay
但是这给了我一个ActiveRecord :: StatementInvalid:Mysql :: Error:未知列'bookinghdr.agent.agenttype'
但是,如果我不包含条件条款,那么我会得到一个记录集,我可以这样做:
b = Bookingitem.prepay
b[0].bookinghdr.agent.agenttype
没有任何错误!
我不想获取所有记录然后迭代它们以找到其代理具有'PP @标志的那些记录。我希望AR能为我做到这一点。
有人对如何实现这一点有任何想法吗?
答案 0 :(得分:1)
您的问题表明您尚未完全了解关联和命名范围的工作原理。由于我无法从您的问题中分辨出哪些部分不清楚,我建议您阅读http://guides.rubyonrails.org/v2.3.11/association_basics.html处的协会基础知识指南。这可以让您快速了解您想要实现的概念。阅读完指南后,它应该都有意义。