我是ror的新手,我正在尝试从4小时内存储像这样的textfields数组形式的数据
<input type="text" name="custom_field[names][]" class="form-control full-width" placeholder = "Name">
<input type="text" name="custom_field[length_limit][]" class="form-control full-width" placeholder = "Length Limit">
我想将名称和长度限制的数据库列中存储的数组存储起来。我不想用循环来完成这项工作。
我在控制器中执行此操作
user = CustomField.create(:name=> params[:names])
但它正在给予ERROR: null value in column "name" violates not-null constraint DETAI
params
{"names"=>["tester", "another tester"], "length_limit"=>["aaaaaa222", "aaaaaa222"]
我正在使用postgresql
我该怎么做?
答案 0 :(得分:0)
params[:names]
是一个数组,因此将它保存到postgres中的字符串/文本字段没有意义,这是CustomField.create(:name=> params[:names])
所做的。
基本上,它扩展为CustomField.create(:name=> ["tester", "another tester"])
。如果要为每个名称创建单独的CustomField记录,则可以执行以下操作:
params[:names].each do |name|
CustomField.create(:name => name)
end
要使用相应的length_limit
创建CustomField记录,您可以执行以下操作:
params[:names].zip(params[:length_limit]).each do |name, limit|
CustomField.create(:name => name, :length_limit => limit)
end
请注意,这并未考虑name
和length_limit
不匹配的错误。您可能需要添加一些验证以确保存在所有必需的数据。