【发布时间】:2020-06-19 06:03:14
【问题描述】:
我正在尝试为 Post 模型创建回调。回调应该更新slug post 属性。这是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
当我在 Rails 控制台中创建 Post 时,我得到以下输出:
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?如有任何帮助,我将不胜感激。
【问题讨论】:
标签: ruby-on-rails ruby model