Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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
Sql 如何在RubyonRails中动态更新列_Sql_Ruby On Rails_Ruby_Dynamic - Fatal编程技术网

Sql 如何在RubyonRails中动态更新列

Sql 如何在RubyonRails中动态更新列,sql,ruby-on-rails,ruby,dynamic,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

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

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
但我理解这是错误的,因为我试图使用字符串作为对象

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

有什么想法吗


谢谢

您可以尝试下面的代码

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"]
object = Model.new
object.columns.map(&:name).each do |column_name|
    object.column_name = true if  (toEdit.includes? column_name)
end

明亮的它起作用了。我可以知道为什么先使用逗号,然后使用.to_sym函数吗?如果
键是由用户输入的,请小心使用@伊曼纽罗兹科;调用后的逗号实际上是
o.send(“#{key.to_sym}=”,true)
,因此第一个参数是函数的符号名,第二个参数是值,在本例中为
true
。对于_sym来说,这只是方法签名使用的内容。细节:@EmmanuelOrozco实际上感谢你指出我注意到我的答案有点多余。您可以使用to_sym或string,但当然这两个都不是必需的(尽管如您所见,它可以工作)。更新后的答案可以使用to_sym或不使用to_sym。我总是使用_sym,只是因为我总是这样做(医生也这么说),但它似乎不是必需的。另外,我要强调@Brad所说的,确保你能控制数组中的内容,否则像
['phone\u required','destroy']
这样的东西可能是有害的。它起作用了。我可以知道为什么先使用逗号,然后使用.to_sym函数吗?如果
键是由用户输入的,请小心使用@伊曼纽罗兹科;调用后的逗号实际上是
o.send(“#{key.to_sym}=”,true)
,因此第一个参数是函数的符号名,第二个参数是值,在本例中为
true
。对于_sym来说,这只是方法签名使用的内容。细节:@EmmanuelOrozco实际上感谢你指出我注意到我的答案有点多余。您可以使用to_sym或string,但当然这两个都不是必需的(尽管如您所见,它可以工作)。更新后的答案可以使用to_sym或不使用to_sym。我总是使用_sym,只是因为我总是这样做(医生也这么说),但它似乎不是必需的。另外,我要强调@Brad所说的,确保你控制数组中的内容,否则像
['phone\u required','destroy']
这样的东西可能有害