如何在Ruby on Rails中动态更新列

时间:2015-04-14 21:15:46

标签: sql ruby-on-rails ruby dynamic

我有一组需要编辑的列(动态),如下所示:

toEdit = ["last_name_required", "email_required", "phone_required"]

请记住,它是动态的,所以它只能拥有手机。例如:

toEdit = ["phone_required"]

我有一个带有SQL列的模型,如:

last_name_required
email_required
phone_required

这些列接受布尔值。

我想生成一个代码来编辑以数组值为参数的列。像这样:

o = Model.fist
o.last_name_required = true
o.phone_required = true
o.save

我尝试过类似的事情:

o = Model.first
o.toEdit[0] = true
o.toEdit[1] = true
o.save

但我明白是错的,因为我试图将字符串用作对象。

我不知道什么是合适的语法。

有什么想法吗?

由于

2 个答案:

答案 0 :(得分:3)

o = Model.new
toEdit.each do |key|
  o.send "#{key}=".to_sym, true
end
o.save

答案 1 :(得分:2)

您可以尝试以下代码。

toEdit = ["last_name_required", "email_required", "phone_required"]
object = Model.new
object.columns.map(&:name).each do |column_name|
    object.column_name = true if  (toEdit.includes? column_name)
end