2013-07-29 127 views
1

我是Rails(Rails 4.0.0)的新手,在創建記錄到數據庫(sqlite3)時遇到問題。 它總是返回'零'。數據庫記錄總是返回'零'

用戶模型(驗證)

attr_accessor :name, :email 

validates :name, presence: { message: 'name field can not be blank'}, 
        length: { maximum: 30 } 

validates :email, presence: { message: 'email can not be blank'}, 
        format: { with: /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i }, 
       uniqueness: { case_sensitive: false, message: 'User already exist'} 

Rails的控制檯(開發環境)

>用戶= User.create(名稱: 「用戶」,郵件:「[email protected] 「)
=> < #User ID:4,名稱:,電子郵件:,created_at: 」2013年7月29日九點27分22秒「,的updated_at:」 2013年7月29日09: 27:22「>

當我詢問用戶的姓名和電子郵件時,我得到有效的數據,而不是零。

> user.name 
=> "user" 
> user.email 
=> "[email protected]" 

然後,我的觀點再次得到

<%= @user.name %> 
<%= @user.email %> 

任何想法,爲什麼我在控制檯(ENV =發展)得到有效的數據,而不是在意見?

回答

3

這個問題似乎是你爲name和email創建了attr_accessor,它覆蓋了ActiveRecord提供的setter和getter方法來設置和獲取數據庫值。從代碼中刪除此行,它應該再工作:

attr_accessor :name, :email 

當溜溜使用您的attr_accessor的,你可以設置和返回值,但他們arent保存到數據庫中,使他們丟失提供stters和getter當你重寫對象或從數據庫重新加載它。

+0

現在確實有效。非常感謝。 –