私はRailsの中の多型の関係によって取得されたクラスの種類を絞り込むことができますか?

StackOverflow https://stackoverflow.com/questions/1054853

質問

私はRailsの中の多型の関係を持っていますが、使用の一つの特定のインスタンスでは、私は特定のクラスのレコードを取得したいと思います。

これを行うための最善のアプローチは何ですか?

役に立ちましたか?

解決 2

has_many_polymorphsプラグインレールはかなりよく、この目的に合うことができます。あなたは、多型の関係の一部である特定のデータ型を引き出すための「ゲッター」を定義することができます。

これはやや複雑であり、ドキュメントは、しかし改善する余裕ができます。

他のヒント

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" ... >]
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top