当我们使用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"}
答案 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)