هل يمكنني تضييق نوع الطبقات التي تم استردادها بواسطة علاقة تعدد الأشكال في القضبان؟
-
20-08-2019 - |
سؤال
ولدي علاقة متعددة الأشكال في القضبان، ولكن في حالة واحدة معين من الاستخدام، أود فقط لاسترداد السجلات لفئة محددة.
ما هي أفضل طريقة للقيام بذلك؟
المحلول 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" ... >]
لا تنتمي إلى StackOverflow