如何在 Rails 上动态更新 Ruby 中的列
How to dynamic update columns in Ruby on Rails
我有一组要编辑的所需列(这是动态的),如下所示:
toEdit = ["last_name_required", "email_required", "phone_required"]
记住,它是动态的,所以它只能有 phone。例如:
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
但我的理解是错误的,因为我正在尝试使用字符串作为对象。
我不知道什么是合适的语法。
有什么想法吗?
谢谢
o = Model.new
toEdit.each do |key|
o.send "#{key}=".to_sym, true
end
o.save
您可以试试下面的代码。
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
我有一组要编辑的所需列(这是动态的),如下所示:
toEdit = ["last_name_required", "email_required", "phone_required"]
记住,它是动态的,所以它只能有 phone。例如:
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
但我的理解是错误的,因为我正在尝试使用字符串作为对象。
我不知道什么是合适的语法。
有什么想法吗?
谢谢
o = Model.new
toEdit.each do |key|
o.send "#{key}=".to_sym, true
end
o.save
您可以试试下面的代码。
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