我有两个模型,_
和product
。产品型号与变体模型具有variation
关系。我还有一个has_many
模型,它与产品模型有自联系关系。
我要做的是从变体模型中获取与匹配产品有关系的对象。
product.rb
match
variation.rb
class Product < ApplicationRecord
...
has_many :variations, -> { order(:order) }, dependent: :destroy
has_and_belongs_to_many :categories
has_and_belongs_to_many :tags
has_many :matches
has_many :matched_products, through: :matches
...
end
match.rb
class Variation < ApplicationRecord
...
VARIATION_ORDER = %w[1 2 3 4 5 6 7 8 9 10]
validates :product_id, presence: true
has_and_belongs_to_many :categories
has_and_belongs_to_many :tags
has_many :products
belongs_to :product
...
end
产品/ show.html.erb 这为我提供了匹配产品的名称对象,但我还希望获得与匹配产品相关联的变体名称
class Match < ActiveRecord::Base
belongs_to :product
belongs_to :matched_product, class_name: 'Product'
end
答案 0 :(得分:1)
为了获取变体图像的名称,您可以这样做:
c.matched_product.variations.pluck(:image).join(', ')
不要忘记使用includes(:variations)
来避免 N + 1次查询,即:@product.matches.includes(:variations)