【问题标题】:When trying to update multiple records Rails can't find the record with id while using friendly_id当尝试更新多条记录时,Rails 在使用 friendly_id 时找不到带有 id 的记录
【发布时间】:2014-12-25 08:42:16
【问题描述】:

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

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

这是我得到的错误:

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

它使用蛞蝓作为 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"}

【问题讨论】:

  • 能否请您发布生成的参数
  • @RajarshiDas 当然...刚刚发布了它们 :-)
  • 你的参数不包含photos的主键id
  • @RajarshiDas 我刚刚将 id 添加为隐藏字段标签,但仍然无法正常工作。 (我用新的参数更新了参数)

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


【解决方案1】:

从我打开的 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多