当尝试更新多个记录时,Rails在使用friendly_id时无法找到具有id的记录

时间:2014-12-25 08:42:17

标签: ruby-on-rails ruby-on-rails-4 friendly-id

当我们使用friendly_id时,Rails不能一次更新多个记录。这是我更新记录的控制器行:

@submitsup = Photo.update(params[:submits].keys, params[:submits].values)

这是我得到的错误:

ActiveRecord::RecordNotFound (Couldn't find Photo with 'id'=hello-world)

它使用了slug作为ID。我怎样才能解决这个问题? (请注意,我同时更新了多条记录。)

生成的参数(用id更新):

{"utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"3WERrJpTdyzzpepkjpzMAZFV67Ogw6yWBICOE/s0o6TgGotO9OpFIFygt7q/oEBcVDNLNkP52cr2PSJ5qWwInQ==", "submits"=>{"hello-world"=>{"accepted"=>"1", "rejectreason"=>"", "id"=>"15922356", "category"=>"Technology", "tags"=>"{hello,go,web}", "nsfw"=>"0"}, "hello-world-37380779"=>{"accepted"=>"0", "rejectreason"=>"", "id"=>"37380779", "category"=>"Technology", "tags"=>"{hello,go,web}", "nsfw"=>"0"}}, "commit"=>"Update All", "controller"=>"dash", "action"=>"update_submits"}

1 个答案:

答案 0 :(得分:0)

从我打开的git问题找到答案:https://github.com/norman/friendly_id/issues/631

numeric_ids = params[:submits].keys.map do |key|
  if key.friendly_id?
    Photo.friendly.find(key).id
  else
    key
  end
end

@submitsup = Photo.update(numeric_ids, params[:submits].values)