¿Puedo limitar el tipo de clases recuperadas por una relación polimórfica en Rails?
-
20-08-2019 - |
Pregunta
Tengo una relación polimórfica en Rails, pero en un caso particular de uso, solo me gustaría recuperar registros para una clase específica.
¿Cuál es el mejor enfoque para hacer esto?
Solución 2
El complemento de rieles has_many_polymorphs puede adaptarse bastante bien a este propósito. Puede definir & Quot; getters & Quot; para extraer tipos de datos específicos que forman parte de una relación polimórfica.
Es algo complicado y la documentación podría permitirse mejorar sin embargo.
Otros consejos
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" ... >]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow