0

我建立了以下协会

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: Unknown column 'bookinghdr.agent.agenttype'

但是,如果我不包含条件子句,那么我会得到一个可以执行的记录集:

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

没有任何错误!

我不想获取所有记录,然后遍历它们以找到其代理具有“PP@”标志的记录。我希望 AR 能为我做到这一点。

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

4

1 回答 1

1

您的问题表明您尚未完全了解关联和命名范围的工作原理。由于我无法从您的问题中看出哪些部分不清楚,我建议您阅读http://guides.rubyonrails.org/v2.3.11/association_basics.html上的 Association Basics 指南。这应该让您快速了解要实现的概念。阅读指南后,一切都应该是有意义的。

于 2012-02-22T22:20:34.613 回答