1
我只是想將用戶輸入參數轉換爲Time對象,所以我試圖爲此定義一個關注點。在Rails中動態定義關注中的實例方法
class Foo < ActiveRecord::Base
include DateAttribute
attr_date :date_column_1, :date_column_2
end
但是當我寫這個問題時,我遇到了一個問題,就是如何在模塊的class_methods塊中定義一個實例方法。
module DateAttribute
extend ActiveSupport::Concern
included do
class_attribute :_attr_date, instance_accessor: false
self._attr_date = []
end
class_methods do
def attr_date(*attributes)
self._attr_date = Set.new(attributes.map(&:to_s))
# how to dynamic define setter methods by loop attributes here
end
def date_attributes
self._attr_date
end
end
end
謝謝。
由於發現動態方法創建指南!我試過這個。看起來,我得到的實際問題是'attr_date'必須在'attr_accessor'後面調用,否則定義的方法會再次被覆蓋。 –