我不知道如何“元化”这种方法,但我知道它应该很简单。该方法看起来像这样
def check_sent=(value)
Date.parse(value) rescue @dates_bad = true
self.write_attribute(:check_sent, value)
end
这适用于ActiveRecord子类。我想为我指定的所有字段使用这些方法。在Ruby中有没有办法做到这一点?
答案 0 :(得分:3)
class Foo < ActiveRecord::Base
def self.define_date_setters(*fields)
fields.each do |field|
define_method("#{ field }=") do |value|
Date.parse(value) rescue @dates_bad = true
self.write_attribute(field, value)
end
end
end
define_date_setters :check_sent, :other_field, :yet_another_field
end
如果您需要多个课程的该功能,可以将define_setters
移动到扩展课程的模块中。