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?

War es hilfreich?

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
scroll top