Я использую friendly_id 5.1.0, и когда я пытаюсь обновить запись, например, создав новую статью, вместо обновления данных записи она создаст новую. я ударил титул, и когда я не изменить при редактировании статьи, он создает слизняк с кучей цифр/букв:friendly_id создает новую запись в UPDATE
http://localhost:3000/articles/first-article-2d392b8e-92b8-44b0-ad67-50dd674f7aaa
Вот мой article.rb Модель:
class Article < ActiveRecord::Base
extend FriendlyId
has_many :comments
friendly_id :title, :use => :slugged
validates :title, presence: true,
length: { minimum: 5}
def should_generate_new_friendly_id?
new_record? || title_changed?
end
, когда я добавляю :use => [:slugged, :history]
, когда я обновляю запись и сохраняю то же название, она не может сохранить ее, потому что поле :slug
равно unique :true
. Вот мой articles_controller.rb:
class ArticlesController < ApplicationController
def index
@articles = Article.all.order(created_at: :desc)
end
def show
@article = Article.friendly.find(params[:id])
if request.path != article_path(@article)
redirect_to @article, status: :moved_permanently
end
end
def new
@article = Article.new
end
def edit
@article = Article.friendly.find(params[:id])
end
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render 'new'
end
end
def update
@article = Article.friendly.find(params[:id])
if @article.update(article_params)
redirect_to @article
else
render 'edit'
end
end
def destroy
@article = Article.friendly.find(params[:id])
@article.destroy
redirect_to articles_path
end
private
def article_params
params.require(:article).permit(:title, :text)
end
end
Вот мой GitHub хранилище ти мой (незавершенной) проекта: https://github.com/TheDoctor314/blog
Попробуйте использовать title_changed? в вашем методе should_generate_new_friendly_id –
Не работает: «(Даже незнакомец: без« new_record? »он по-прежнему создает сетку при создании новой статьи. – TheDoctor
Он всегда будет создавать пул на new_record. –