我有一个模型 User
,当我创建一个模型时,我想实用地设置一些 API key ,具体来说:
@user.apikey = Digest::MD5.hexdigest(BCrypt::Password.create("jibberish").to_s)
我希望能够运行 User.create!(:email=>"something@test.com")
并让它使用随机生成的 API key 和 secret 创建用户。
我目前正在 Controller 中执行此操作,但是当我尝试将默认用户添加到 seeds.rb
文件时,出现 SQL 错误(说我的 apikey 为空)。
我尝试覆盖 save
定义,但是当我更新模型时这似乎会导致问题,因为它会覆盖值。我尝试覆盖 initialize
定义,但它返回了一个 nil:NilClass
并破坏了一些东西。
有更好的方法吗?
使用回调和 ||=(= 除非对象不是 nil):)
class User < ActiveRecord::Base
before_create :add_apikey #or before_save
private
def add_apikey
self.apikey ||= Digest::MD5.hexdigest(BCrypt::Password.create(self.password).to_s)
end
end
但你绝对应该看看 devise , authlogic或 clearance gem
我是一名优秀的程序员,十分优秀!