2
の2つの正確なインスタンスを持つレコードを探す: 私は複数のバリエーションを持つ製品に関するビジネスロジックを持つアプリケーションを持っている多対多の関係
:class Task < ApplicationRecord
belongs_to :variant
end
class Variant < ApplicationRecord
belongs_to :product
has_many :variant_option_values
has_many :option_values, through: :variant_option_values
has_many :prices
end
class Product < ApplicationRecord
has_many :product_option_types
has_many :option_types, through: :product_option_types
has_many :variants
end
class OptionValue < ApplicationRecord
belongs_to :option_type
end
class OptionType < ApplicationRecord
has_many :product_option_types
has_many :products, through: :product_option_types
has_many :option_values
end
class ProductOptionType < ApplicationRecord
belongs_to :product
belongs_to :option_type
end
class VariantOptionValue < ApplicationRecord
belongs_to :variant
belongs_to :option_value
end
ERDは、このようになります
製品をお持ちの場合product_1
OptionValue
インスタンスoption_value_1
,option_value_2
およびoption_value_3
のバリアントを見つけるにはどうすればよいですか?バリアントは同時に3つのオプション値をすべて持つ必要があり、3つ以上のオプション値を持つことができます(必ずしもそうである必要はありません)。
このクエリは、指定されたオプション値を持つ製品を検索します。私はそれらのオプション値を持つ特定の製品の変種を探したい。 – pmichna
@pmichna更新された回答を参照してください –
いいですね。ただし、バリアントにはこれらの3つのオプション値のみがあると仮定します。どのようなケースでは、バリアントに3つのオプション値があるだけでなく、他のものもありますか? – pmichna