gpt4 book ai didi

ruby-on-rails - rails :before_create callback not working for my Model

转载 作者:行者123 更新时间:2023-12-04 05:57:51 24 4
gpt4 key购买 nike

我正在尝试在我的 Rails 3 模型中执行以下操作:

require 'securerandom'

class Contest < ActiveRecord::Base
attr_accessor :key
before_create :generate_key

private

def generate_key
self.key = SecureRandom.hex(3)
end

end

然而,当我创建一个竞赛时,我的表中的所有字段似乎都是正确的,除了在我的数据库中保持 nil 的键。

更多信息:

在我的 rails 服务器日志中,当我通过“创建竞赛表单”创建竞赛时看到以下内容
SQL (0.5ms)  INSERT INTO "contests" ("category", "created_at", "description", "key", "price", "status", "time", "title", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)  [["category", "camisas"], ["created_at", Wed, 15 Feb 2012 18:57:16 UTC +00:00], ["description", "test_description"], ["key", nil], ["price", 111], ["status", "In process"], ["time", "2sem"], ["title", "test_contest"], ["updated_at", Wed, 15 Feb 2012 18:57:16 UTC +00:00], ["user_id", 5]]

注意 ["key", nil]

但这应该是正确的吗?,我猜该 key 将由 Contest.rb :before_create 回调添加?

也许我错过了使用 SecureRandom?

最佳答案

您为什么使用 attr_accessor ?该方法实际上将为键定义 setter 和 getter 方法,跟踪虚拟属性。

也许您打算使用 attr_accessible ,但即便如此,这也是不必要的,因为您是直接设置属性。

真的,你也不需要 attr_accessor :keyattr_accessible :key如果你只是像这样设置它,那么在你的模型中。删除 attr_accessor它会起作用。

关于ruby-on-rails - rails :before_create callback not working for my Model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9299647/

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