我有6个字段,我想在模型中设置它们的属性。 3个_print字段会像这样自动保存。
def field1=(value)
@number = Phoner::Phone.parse(value)
write_attribute(:field1, @number.to_s)
end
def field1_print=(value)
write_attribute(:field1_print, print_format(@number))
end
我有这些方法用于field2,field2_print,field3和field3_print。我可以将这些方法放在某个.each方法中并进行迭代,这样我就不会重复这些方法吗?
答案 0 :(得分:0)
我没有对它进行过测试,但你可以像这样构建:
["1", "2", "3"].each do |action|
define_method("field#{action}=(value)") do |argument|
@number = Phoner::Phone.parse(argument)
write_attribute("field#{action}", @number.to_s)
end
end
["1", "2", "3"].each do |action|
define_method("field#{action}_print=(value)") do |argument|
write_attribute("field#{action}_print, print_format(@number))
end
end