Я создал этот модуль:
приложение/модели/проблемы/sluggable.rb
module Sluggable
extend ActiveSupport::Concern
included do
before_create :set_slug
end
def set_slug
if self.slug.nil?
puts 'adding slug'
self.slug = SecureRandom.urlsafe_base64(5)
end
end
end
и я включаю его в модель, вот так:
приложение/модели/plan.rb
class Plan < ApplicationRecord
extend FriendlyId
friendly_id :id, :use => :slugged
include Sluggable
end
но before_create не срабатывает. Столбец slug - это столбец not_null, поэтому я получаю сообщение об ошибке базы данных.
ОШИБКА: нулевое значение в столбце "слаг" нарушает ограничение ненулевого значения
Если поставить код set_slug прямо в модель, все работает. Итак, что мне здесь не хватает в отношении проблем в Rails 5?
Интересно, связано ли это как-то с использованием FriendlyId (именно поэтому я в первую очередь добавил слаги!)
before_save
работает? - person Pedro Nascimento   schedule 18.02.2017set_slug
в модель, она будет работать. Итак, оставитьincluded do...end
в модуле и просто скопировать set_slug работает? - person Pedro Nascimento   schedule 18.02.2017included
. - person Pedro Nascimento   schedule 18.02.2017