用has_many选择has_many

时间:2013-12-10 17:17:23

标签: ruby-on-rails activerecord

我有以下关联:

class User
  has_many :orders
  has_many :events
end

class Event
  belongs_to :user
  has_many :orders
end

class Order
  belongs_to :event
end

我的问题是,在做User.last.events.orders时我什么都没得到,而User.last.events.last.orders是由东西产生的(最后只是我选择测试它的东西)

有什么问题?

请注意,用户有订单,但拥有活动的用户可以拥有其他用户的订单...

这就是我想要到达的地方。

谢谢!

2 个答案:

答案 0 :(得分:2)

User.first.events为您提供与指定用户记录关联的事件数组(在本例中为第一个,在您的情况下为最后一个)

因此,当您拨打User.first.events.orders时,您可能会收到“#Method order'错误。

User.first.events.last.order将为您提供与第一个用户的最后一个事件相关联的订单。

如果您希望来自非该用户的活动的订单,则必须有更复杂的查询。

答案 1 :(得分:1)

User.last.events是事件的集合,因此不应该有orders方法,而User.last-events.orders应该生成no method error

我注意到,即使您belongs_to :user上有Order,您has_many :orders上也没有User声明。