我基本上想創建一個關注點,它將包含在所有的多態模型中。這個問題需要有一個動態的setter方法來設置'_type'列的值。Rails:如何動態檢索多態模型的多態'_type'列名稱?
module StiPolymorphable
extend ActiveSupport::Concern
included do
define_method "#{magic_method_to_get_type_column}=" do |type_field|
super(type_field.to_s.classify.constantize.base_class.to_s)
end
end
end
我基本上想訪問一個父實例,而不是一個人實例的所有地址。
示例 - 假設我有以下類
class Person < ActiveRecord::Base
end
class Parent < Person end
class Teacher < Person end
class Address < ActiveRecord::Base
include StiPolymorphable
belongs_to :addressable, polymorphic: true
end
現在,如果我嘗試訪問父它給了我零記錄以來的addressable_type字段包含值「人」的地址。
Parent.first.addresses => #<ActiveRecord::Associations::CollectionProxy []>
Person.first.addresses => #<ActiveRecord::Associations::CollectionProxy [#<Address id: .....>]>
你能給的你將如何使用這個模塊的更多細節? –
我基本上試圖在我的應用程序中可以屬於STI模型的所有多態模型中包含此模塊。 – KcC0
@MaxWilliams我試圖讓多態實例訪問所屬STI模型的基類。如果這是有道理的。 我會編輯問題以提供更好的示例。 – KcC0