activerecord - Rails 4 query a reference via n:n relation -
following structure
production belongs_to :offer has_many :production_positions has_many :products, through: :production_positions product has_many :production_positions has_many :productions, through: :production_positions productionposition belongs_to :production belongs_to :product now want offers contains product_id 1. how did have query database?
to productions quite easy:
production.includes(:products).where("products.id" => 1) but how offers referenced?
offer.includes(:production).includes(:products).where("products.id" => 1) the line above produces next error: association named 'products' not found on offer
add has_many :products, through: :production in offer class , seek following:
offer.select('offers.*').joins(:products).where('products.id = ?', 1) i assumed had has_one :production in offer class. add together scope perform query:
class offer < activerecord::base has_one :production has_many :products, through: :production scope :with_product_id, ->(id) select('offers.*'). joins(:products). where('products.id = ?', id) end end example (offers product 1):
offer.with_product_id(1) activerecord ruby-on-rails-4
No comments:
Post a Comment