如何使用字符串

时间:2015-07-18 08:34:48

标签: ruby-on-rails

我有这样的方法:

class MyClass < ActiveRecord::Base
  def assign_weighted_values
    unless foo.nil?
      self.weighted_foo = 3 * foo
    end
    unless bar.nil?
      self.weighted_bar = 3 * bar
    end
    unless hoge.nil?
      self.weighted_hoge = 3 * hoge
    end
  end
end

但我想这样写:

  def assign_weighted_values
    %w(foo bar hoge).each do |column|
      next if send(column).nil?
      self.send("weighted_#{column}") = 3 * column
    end
  end

有没有办法使用String?

为列分配值?

2 个答案:

答案 0 :(得分:2)

您可以使用assign_attributes

def assign_weighted_values
  %(foo bar hoge).each do |column|
    next if send(column).nil?
    assign_attributes({ "weighted_#{column}" => 3 * column })
  end
end

答案 1 :(得分:1)

 def assign_weighted_values
  %w(foo bar hoge).each do |column|
   next if send(column).nil?
   self.send("weighted_#{column}=",3 * column)
  end
 self.save
 end