هل يمكنني تضييق نوع الطبقات التي تم استردادها بواسطة علاقة تعدد الأشكال في القضبان؟

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

سؤال

ولدي علاقة متعددة الأشكال في القضبان، ولكن في حالة واحدة معين من الاستخدام، أود فقط لاسترداد السجلات لفئة محددة.

ما هي أفضل طريقة للقيام بذلك؟

هل كانت مفيدة؟

المحلول 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