繁体   English   中英

Ruby / Rails遍历数组并保存到db?

[英]Ruby/Rails Iterate through array and save to db?

我想将@enc中的每个字符串放入column_name的每个字段中作为值

@enc=["hUt7ocoih//kFpgEizBowBAdxqqbGV1jkKVipVJwJnPGoPtTN16ZAJvW9tsi\n3inn\n", "wGNyaoEZ09jSg+/IclWFGAXzwz5lXLxJTUKqCFIiOy3ZXRgdwFUsNf/75R2V\nZm83\n", "MPq3KSzDzLvTeYh+h00HD+5FAgKoNksykJhzROVZWbIJ36WNoBgkSoicJ5wx\nog0g\n"]


Model.all.each do |row|
encrypted = @enc.map { |i| i}
row.column_name = encrypted
row.save!
end

我的代码将数组@enc中的所有字符串放入单个字段中? 我不要那个。

救命

我认为您正在寻找这样的东西:

@enc.each do |str|
  m = Model.new
  m.column_name = str
  m.save
end

默认情况下,Rails不允许批量分配。 您必须将要允许的参数列入白名单。 您是否尝试过执行以下操作?

@enc.each do |s|
   cparams = create_params 
   cparams[:column_name] = s
   Model.create(cparams)
end


def create_params
   params.permit(:column_name)
end

您将需要指定要保存到的列名称。 通过分别设置每列,您还可以避免质量分配错误:

@enc=["hUt7ocoih//kFpgEizBowBAdxqqbGV1jkKVipVJwJnPGoPtTN16ZAJvW9tsi\n3inn\n", "wGNyaoEZ09jSg+/IclWFGAXzwz5lXLxJTUKqCFIiOy3ZXRgdwFUsNf/75R2V\nZm83\n", "MPq3KSzDzLvTeYh+h00HD+5FAgKoNksykJhzROVZWbIJ36WNoBgkSoicJ5wx\nog0g\n"]

model = Widget.new
column_names = [:column1, :column2, :column3]

@enc.each_with_index do |s, i|
  model[column_names[i]] = s
end

model.save

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM