Railsで二重複数形を扱う最良の方法は何ですか? 私はいくつかのhas_and_belongs_to_many
関係を持っています、そして私は次のようなものが欲しいです:
@templates = current_user.brands.templates
しかし、私ができる最も近いのは次のようなものです:
current_user.brands.each do |b|
@templates = b.templates
end
何かご意見は?
Railsで二重複数形を扱う最良の方法は何ですか? 私はいくつかのhas_and_belongs_to_many
関係を持っています、そして私は次のようなものが欲しいです:
@templates = current_user.brands.templates
しかし、私ができる最も近いのは次のようなものです:
current_user.brands.each do |b|
@templates = b.templates
end
何かご意見は?
ユーザーモデルで関連付けを介して使用できます。
class User < ActiveRecord::Base
has_many :templates, :through => : brands
....
end
それで、
@templates = current_user.templates
または、
また、ブランドの配列を繰り返し処理し、各ブランドのテンプレートを収集して結果を取得することもできます。
@templates = current_user.brands.map{|brand| brand.templates}.flatten
のようなものを持つことはできないと思いますbrands.templates
。複数のブランドからテンプレートのコレクションを取得したい場合、そのための唯一の方法は、調べている各ブランドからテンプレートを「収集」することです。
@templates = []
current_user.brands.each do |b|
@templates.push(b.templates)
end
アソシエーションは、has_and_belongs_to_many
アソシエーションと同様にhas_many
、メソッドbrand.templates
および を生成しますが、 は生成しtemplate.brands
ませんbrands.templates
。