Rails:创建一种动态保存到数据库列的方法

时间:2015-09-20 21:33:32

标签: ruby-on-rails

User.rb

   def save_to_db(column_name)
      column = (column_name + "_data")
      self.column = "blah blah blah"
   end

e.g。

如果我调用save_to_db(" stripe"),我的意图是保存"等等等等等等。到user.stripe_data列。

但我在将字符串转换为可以调用自我以保存到数据库的方法时遇到问题。

1 个答案:

答案 0 :(得分:1)

假设我正确理解了您的请求,您可以使用[]=方法

def save_to_db(column_name)
  self["#{column_name}_data"] = "blah blah blah"
end

或使用send

def save_to_db(column_name)
  self.send("#{column_name}_data=", "blah blah blah")
end

绕过setter的另一种方法是直接使用write_attribute。但是你只能在模型本身内部使用这种方法。

def save_to_db(column_name)
  self.write_attribute("#{column_name}_data", "blah blah blah")
end