Я пытаюсь создать обратный вызов для модели Post
. Обратный вызов должен обновить атрибут сообщения slug
. Это соответствующий код в post.rb
:
class Post < ApplicationRecord
after_create :set_slug
SLUG_FILTER = '/\!?@#$`\'%^&*+=",.()[]{}‘’'
private
def set_slug
self.slug = title.delete(SLUG_FILTER).strip.gsub(/\s+/,'-').downcase
end
end
Когда я создаю Post
в консоли rails, я получаю следующий результат:
irb> author(1).posts.create!(title: 'some post title', markdown: 'test **123**')
=> #<Post id: 25, title: "some post title", markdown: "test **123**", ..., slug: "some-post-title">
irb> Post.find(25)
=> #<Post id: 25, title: "some post title", markdown: "test **123**", ..., slug: nil>
Кажется, что slug
Атрибут создается, но затем становится nil
. Почему атрибут slug
равен nil
, а не some-post-title
? Буду признателен за любую помощь.