Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用字符串为列赋值_Ruby On Rails - Fatal编程技术网

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