Kann ich die Art von Klassen durch eine polymorphe Beziehung in Rails abgerufen eingrenzen?
-
20-08-2019 - |
Frage
Ich habe eine polymorphe Beziehung in Rails, aber in einer bestimmten Instanz Gebrauch, würde ich nur Datensätze wie für eine bestimmte Klasse abzurufen.
Was ist der beste Ansatz, dies zu tun?
Lösung 2
Die Schienen-Plugin has_many_polymorphs können diesem Zweck passen ziemlich gut. Sie können „Getter“ definieren bestimmte Datentypen heraus zu ziehen, die Teil einer polymorphen Beziehung sind.
Es ist etwas kompliziert und die Dokumentation leisten kann, aber zu verbessern.
Andere Tipps
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" ... >]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow