2012-01-27 77 views
0

出於某種原因@store具有三個屬性對象將不分配所述第三值(產生的令牌字符串)。該模型具有USER_IDPRODUCT_IDtoken_string。但當涉及到token_generate函數什麼都沒有分配,並且在數據庫的token_string列中以結束。 Product_id and 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 
+1

如果token_string是數據庫中的字段,爲什麼在模型聲明中有attr_writer:token_string?這很可能會覆蓋數據庫訪問器。 – 2012-01-27 03:03:26

+0

當您嘗試保存時,您可以發佈日誌嗎? – 2012-01-27 03:04:28

+0

在日誌顯示中,product_id和user_id值被插入,而token_string字段爲零 – katie 2012-01-27 03:07:00

回答

2

@SrdjanPejic是正確的,請嘗試刪除attr_accessor :token_string線,很可能阻止設置:屬性所需的INSERT語句的哈希值。

+0

這是真的。它的工作原理!謝謝! – katie 2012-01-27 03:51:02