2011-10-11 81 views
0

我有以下协会成立Rails的预先​​加载的条件

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 ::错误:未知列'bookinghdr.agent.agenttyp E”

但是如果我不包括条件子句然后我得到一个记录上,我可以这样做:

b = Bookingitem.prepay 
b[0].bookinghdr.agent.agenttype 

没有任何错误!

我不想得到所有记录,然后遍历它们以找到代理人拥有'PP @标志'的记录。我希望AR能为我做到这一点。

有人有任何想法如何实现这一目标?

回答

1

你的问题表明你还没有完全理解关联和命名范围是如何工作的。由于我不能从你的问题中知道哪些部分不清楚,我建议你阅读关联基础指南http://guides.rubyonrails.org/v2.3.11/association_basics.html。这应该让你了解你想要实现的概念。阅读完指南后,应该都是有道理的。