由于某种原因,具有三个属性的@store对象将不会分配第三个值(生成的标记字符串)。该模型具有 user_id , product_id 和 token_string 。但在 token_generate函数时,没有分配任何内容,最终在数据库的token_string列中以 nil 结束。 Product_id 和 user_id 完全保存在数据库中。这里发生了什么?提前谢谢。
class Store < ActiveRecord::Base
require 'digest/sha1'
attr_accessor :token_string
before_save :token_generate
def save_with_payment
#Until here the object has user_id and product_id attribute values
save!
end
private
def token_generate
self.token_string = Digest::SHA1.hexdigest("random string")
end
end
控制器
def create
@store=Store.new(params[:store])
if @store.save_with_payment
redirect_to :controller=>"products",:action=>"index"
else
redirect_to :action=>"new"
end
end
答案 0 :(得分:2)
@SrdjanPejic是正确的,请尝试删除可能阻止设置INSERT语句所需的:attributes哈希值的attr_accessor :token_string
行。