Puis-je limiter le type de classes récupérées par une relation polymorphe dans Rails?
-
20-08-2019 - |
Question
J'ai une relation polymorphe dans Rails, mais dans un cas d'utilisation particulier, j'aimerais uniquement récupérer les enregistrements d'une classe spécifique.
Quelle est la meilleure approche pour ce faire?
La solution 2
Le plugin rails has_many_polymorphs peut assez bien s’y adapter. Vous pouvez définir & "; Getters &"; extraire des types de données spécifiques faisant partie d’une relation polymorphe.
C’est un peu compliqué et la documentation pourrait cependant permettre de l’améliorer.
Autres conseils
class Address < ActiveRecord::Base
belongs_to :addressable, :polymorphic => true
end
class Person < ActiveRecord::Base
has_many :addresses, :as => :addressable
end
class Company < ActiveRecord::Base
has_many :addresses, :as => :addressable
end
>> c = Company.create(:name => "WidgetCo")
>> p = Person.create(:name => "John Smith")
>> a1 = Address.create(:street => "123 Foo ST", :city => "Barville", :state_code => "MT", :zip_code => "12345", :addressable => p)
>> a2 = Address.create(:street => "321 Contact RD", :city => "Bazburg", :state_code => "MT", :zip_code => "54321", :addressable => c)
>> Address.all(:conditions => { :addressable_type => Person.class_name })
=> [#<Address id: 1, street: "123 Foo ST" ... >]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow