从特定用户的订单中查找页面

时间:2014-05-05 22:36:37

标签: ruby-on-rails associations

我有以下关联:

User has_many Order
Order has_many Pages

如何查找属于特定用户的所有页面?不是直接关联,而是表顺序就在它们之间。所以,我不能这样做:

user.pages

我可以做user.orders

1 个答案:

答案 0 :(得分:0)

你想要的可能是一个不同的联想。尝试使用has_many:通过关联。

User.rb
has_many :orders
has_many :pages, through: :orders

Order.rb
belongs_to :user
belongs_to :page

Page.rb
has_many :orders
has_many :users, through: :orders

有关详细信息,请查看Rails文档:http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

如果您真的不需要关于加入模型的更多元数据(在本例中为Order.rb),您也可以简单地使用HABTM关联。

  • 生成一个名为users_pages
  • 的表

然后:

User.rb
has_and_belongs_to_many :pages

Pages.rb
has_and_belongs_to_many :users

有关此关联的更多信息,请阅读:http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association

有关何时选择其中任何一个的详细信息,请阅读:http://guides.rubyonrails.org/association_basics.html#choosing-between-has-many-through-and-has-and-belongs-to-many