gpt4 book ai didi

ruby-on-rails - before_create 未在 model.create 上调用

转载 作者:行者123 更新时间:2023-12-05 01:20:35 24 4
gpt4 key购买 nike

我有这个代码:

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 回调中设置 premalinkbefore_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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com