如何在模型中分配不同的属性?

时间:2015-03-03 12:12:01

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我有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方法中并进行迭代,这样我就不会重复这些方法吗?

1 个答案:

答案 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