作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个代码:
class Project < ActiveRecord::Base
acts_as_paranoid
belongs_to :user
belongs_to :organization
accepts_nested_attributes_for :organization
attr_accessible :name, :permalink, :organization_id, :user_id
validates_length_of :name, :minimum => 4
validates_presence_of :permalink
validates_uniqueness_of :permalink, :case_sensitive => false, :scope => :deleted_at
validates_presence_of :user
validates_presence_of :organization
before_create :generate_permalink
protected
def generate_permalink
binding.pry
self.permalink = "123456789"
end
end
当我调用 ProjectsController#create
p = Project.new
p.name = "abcdef"
p.save
应用程序不会在 generate_permalink 中的 binding.pry 上停止,并且项目无效且未保存,因为 permalink == nil
。为什么没有调用 generate_permalink 方法?
最佳答案
您必须在 before_validation
回调中设置 premalink
。before_create
回调在验证后调用。此处验证失败,因此您的 before_create
回调将永远不会调用。
在此处检查回调序列 http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
关于ruby-on-rails - before_create 未在 model.create 上调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31683652/
我是一名优秀的程序员,十分优秀!