레일의 다형성 관계에 의해 검색된 클래스 유형을 좁힐 수 있습니까?

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

문제

나는 철도에서 다형성 관계가 있지만, 특정 사용 사례에서는 특정 클래스의 레코드 만 검색하고 싶습니다.

이 작업을 수행하기 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책 2

Rails 플러그인 has_many_polymorphs는이 목적에 상당히 잘 맞을 수 있습니다. 다형성 관계의 일부인 특정 데이터 유형을 끌어 내기 위해 "getters"를 정의 할 수 있습니다.

그러나 다소 복잡하고 문서는 개선 할 수 있습니다.

다른 팁

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