动态更改数据库的列名称,并在rails中的ruby中将值存储到其中

Bal*_*jiB -1 ruby ruby-on-rails

在我的视图页面中,我有格式的数据哈希

"round"=>{"1"=>"a", "2"=>"b", "3"=>"c", "4"=>"d"}
Run Code Online (Sandbox Code Playgroud)

我有四列 round1,round2,round3 and round4

现在我动态地将这些哈希值存储到这4列中.

我遵循以下方式

if params[:round].present?
    count=1
    params[:round].each do |k,v|
      @data.("round"+"#{count}")=v
      count+=1
    end
  end
Run Code Online (Sandbox Code Playgroud)

这里 @data=MgData.new()

在上面的代码中,我想保存它,@data.round1=v,@data.round2=v....但我最终得到错误

Alf*_*fie 5

我相信你的这一行:@data.("round"+"#{count}")=v导致错误

这是您应该动态分配属性的方式

if params[:round].present?
  params[:round].each do |k,v|
    @data.send("round#{k}=", v)
  end
end
Run Code Online (Sandbox Code Playgroud)