我有这样的方法:
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?
为列分配值?答案 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