Rails:使用双复数(has_and_belongs_to_many)

时间:2013-08-06 04:11:38

标签: ruby-on-rails ruby-on-rails-3 has-and-belongs-to-many

在Rails中使用双复数的最佳方法是什么?我有一些has_and_belongs_to_many关系,我想要类似的东西:

@templates = current_user.brands.templates

但我能做的最接近的是:

current_user.brands.each do |b|
  @templates = b.templates
end

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您可以在用户模型中使用关联。

class User < ActiveRecord::Base
  has_many :templates, :through => : brands
  ....
end

然后,

@templates = current_user.templates

或者,

您还可以通过遍历品牌数组并为每个品牌收集模板来获得结果:

@templates = current_user.brands.map{|brand| brand.templates}.flatten

答案 1 :(得分:1)

我认为你不能拥有brands.templates之类的东西。如果您想拥有来自多个品牌的模板集合,唯一的方法是“收集”您正在查看的每个品牌的模板:

@templates = []
current_user.brands.each do |b|
  @templates.push(b.templates)
end

has_and_belongs_to_many关联与has_many关联一样,会生成方法brand.templatestemplate.brands,但不生成brands.templates