Могу ли я сузить тип классов, полученных с помощью полиморфных отношений в Rails? - PullRequest
1 голос
/ 28 июня 2009

У меня полиморфные отношения в Rails, но в одном конкретном случае я бы хотел получить записи только для определенного класса.

Какой лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 29 июня 2009
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" ... >]
0 голосов
/ 07 июля 2009

Плагин rails has_many_polymorphs вполне может подойти для этой цели. Вы можете определить «геттеры» для извлечения определенных типов данных, которые являются частью полиморфных отношений.

Это несколько сложно, и документацию можно было бы улучшить, однако.

...