Posso diminuir o tipo de aulas recuperado por uma relação polimórfica no Rails?
-
20-08-2019 - |
Pergunta
Eu tenho uma relação polimórfica no Rails, mas em uma instância específica de uso, eu só gosto para recuperar registros para uma classe específica.
Qual é a melhor abordagem para fazer isso?
Solução 2
Os trilhos do plugin has_many_polymorphs pode atender esta finalidade razoavelmente bem. Você pode definir "getters" para tipos de dados puxar específicas que fazem parte de um relacionamento polimórfico.
É um pouco complicado e documentação poderiam ter recursos para melhorar no entanto.
Outras dicas
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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow