Friendly_Id 5.0 -> RecordNotFound

В моей модели у меня есть следующее:

class Dyno < ActiveRecord::Base  
  include FriendlyId
  friendly_id :slug_candidates, :use => [:slugged, :history, :finders]

  def should_generate_new_friendly_id?
    car.present? && horsepower_changed?
  end

  def slug_candidates
    [
      [car.owner, :horsepower, "horsepower-dyno"],
      [car.owner, car.nickname, :horsepower, "horsepower-dyno"]
    ]
  end

Когда я пытаюсь обновить запись: до того, как будет сгенерирован слаг, у меня нет проблем с запуском моих проверок и получением всех моих сообщений проверки, но как только слаг сгенерирован, и я нажимаю «Сохранить», я получаю 404. Даже если я ввел все правильные поля и нажмите «Сохранить», чтобы пройти проверку, это не сохраняет запись и возвращает 404

Похоже, он пытается найти и сохранить запись с помощью нового «-slug-» до того, как этот слаг появится в записи.

Started PATCH "/dynos/john-smith-1800-horsepower-dyno" for 127.0.0.1 at 2014-03-09 12:50:03 -0400
Processing by DynosController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"rxz8PPyTYgQx6umBB7t50fLtPUk4zGrCmSiwd751jxI=", "dyno"=>{"car_id"=>"1", "horsepower"=>"1800", "torque"=>"555", "boost"=>"", "nitrous"=>"no", "nitrous_amount"=>"", "fuel_id"=>"2", "tuner"=>"", "video_url"=>"", "dyno_brand_id"=>"", "details"=>""}, "commit"=>"Update Dyno", "id"=>"john-smith-1800-horsepower-dyno"}
  [1m[35mDyno Load (0.6ms)[0m  SELECT "dynos".* FROM "dynos" INNER JOIN "friendly_id_slugs" ON "friendly_id_slugs"."sluggable_id" = "dynos"."id" AND "friendly_id_slugs"."sluggable_type" = 'Dyno' WHERE ("friendly_id_slugs"."sluggable_type" = 'Dyno' AND "friendly_id_slugs"."slug" = 'john-smith-1800-horsepower-dyno') ORDER BY "dynos"."id" ASC LIMIT 1
Completed 404 Not Found in 5ms

В моем контроллере я использую область .friendly.

def set_dyno
  @dyno = Dyno.friendly.find(params[:id])
end

Кроме того, в моем контроллере я сохраняю новое действие, чтобы позволить пользователям добавлять связанные изображения из того же нового представления. Может быть, Friendly_Id может реагировать на нулевой фрагмент в существующей записи?

def new
  @dyno = Dyno.new
  @dyno.save :validate => false   
end

Что я делаю неправильно?

Я использую friendly_id 5.0.2


person Joel Grannas    schedule 09.03.2014    source источник
comment
Является ли params[:id] дружественным идентификатором? или целое число?   -  person Joe    schedule 09.03.2014
comment
:id — целое число, :slug — мое поле friendly_id   -  person Joel Grannas    schedule 09.03.2014
comment
@JoelGrannas Вы получили ответ на этот вопрос или он решен для вас?   -  person sunil    schedule 23.05.2014


Ответы (1)


Пожалуйста, удалите дружественных из Dyno.

friendly.find(params[:id])

как вы используете искатель здесь

friendly_id :slug_candidates, :use => [:slugged, :history, :finders]
person shoaib    schedule 25.06.2015