Начиная с объектного контракта, я хотел бы получить все контракты, которые получают продукт, относящийся к объекту obseque
Итак, я создал область действия:
produit.rb
def self.named_scope_obseque_method
where(:code_reference => Produit::PRODUIT_REF_OB)
end
scope(:obseque, proc { named_scope_obseque_method })
contrat.rb
scope :obseques, -> {joins(:produit).merge(produit_id: Produit.obseque.map(&:id))}
И вызов Contrat.obseques
должен вернуть весь контракт, который имеет product
, связанный с obseque
Но я получаю:
NoMethodError: неопределенный метод default_scoped?' for {:produit_id=>[3]}:Hash
from /usr/local/bundle/gems/activerecord-3.2.15/lib/active_record/relation/spawn_methods.rb:11:in
merge '
схема.руб
create_table "produits", :force => true do |t|
t.string "initiales", :limit => 2
t.string "code_reference", :limit => 100
end
create_table "obseques", :force => true do |t|
t.string "nom"
t.integer "produit_id"
end
create_table "contrats", :force => true do |t|
...
t.integer "produit_id"
...
end
Produit.rb
has_one :obseque, :class_name => "Obseque", :foreign_key => "produit_id"
has_many :contrats, :class_name => "Contrat", :foreign_key => "produit_id"
contrat.rb
belongs_to :produit, :class_name => "Produit", :foreign_key => "produit_id"
obseque.rb
belongs_to :produit, :class_name => "Produit", :foreign_key => "produit_id"