Ruby on rails 如何使用字符串为列赋值
我有这样一种方法:Ruby on rails 如何使用字符串为列赋值,ruby-on-rails,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
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
有没有一种方法可以通过使用字符串为列赋值?您可以使用
你可以用
你可以用
你可以用
抛开一些打字错误不谈,您的代码已经做到了这一点-您还想要什么?@FrederickCheung我的代码最后出现
语法错误,意外的“=”,期望出现关键字\u end
,因为您正在为属性设置“getter”方法。send(“weighted#{column}”)将只获取该属性的值。前面的等号是一个错误。您需要做的是调用“setter”方法。像这样,self.send(“weighted#{column}=”,“value you want to set”)谢谢,我不知道ActiveRecord::Base Model有setter方法。除了一些拼写错误,你的代码已经做到了这一点-你还想要什么?@FrederickCheung我的代码最后出现了语法错误,意外的“=”,由于您正在为属性设置“getter”方法,因此需要出现关键字\u end
。send(“weighted#{column}”)将只获取该属性的值。前面的等号是一个错误。您需要做的是调用“setter”方法。像这样,self.send(“weighted#{column}=”,“value you want to set”)谢谢,我不知道ActiveRecord::Base Model有setter方法。除了一些拼写错误,你的代码已经做到了这一点-你还想要什么?@FrederickCheung我的代码最后出现了语法错误,意外的“=”,由于您正在为属性设置“getter”方法,因此需要出现关键字\u end
。send(“weighted#{column}”)将只获取该属性的值。前面的等号是一个错误。您需要做的是调用“setter”方法。像这样,self.send(“weighted#{column}=”,“value you want to set”)谢谢,我不知道ActiveRecord::Base Model有setter方法。除了一些拼写错误,你的代码已经做到了这一点-你还想要什么?@FrederickCheung我的代码最后出现了语法错误,意外的“=”,由于您正在为属性设置“getter”方法,因此需要出现关键字\u end
。send(“weighted#{column}”)将只获取该属性的值。前面的等号是一个错误。您需要做的是调用“setter”方法。像这样,self.send(“weighted#{column}=”,“value you want to set”)谢谢,我不知道ActiveRecord::Base Model有setter方法。
def assign_weighted_values
%w(foo bar hoge).each do |column|
next if send(column).nil?
self.send("weighted_#{column}") = 3 * column
end
end
def assign_weighted_values
%(foo bar hoge).each do |column|
next if send(column).nil?
assign_attributes({ "weighted_#{column}" => 3 * column })
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
self.save
end