0
我正在使用Ruby on Rails 4用於用戶身份驗證設計。Rails 4,設計 - 無法更新用戶名從rails控制檯
我有從控制檯創建用戶的問題,也沒有從編輯的設計註冊視圖。我可以設置密碼和電子郵件,但我無法設置用戶名,我必須創建用戶名稱,然後使用SQL命令(「UPDATE users SET ...」)從dbconsole更改它。然後我可以用用戶名登錄。
我的用戶表:
create_table "users", force: true do |t|
t.string "name", default: "", null: false
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
end
我的用戶模型:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:rememberable, :trackable, :validatable
validates_presence_of :name, :email, :password
attr_accessor :name
end
當我嘗試
u = User.new
u.name = "test"
從鐵軌控制檯名保持空白。
謝謝,它的工作,但是爲什麼呢? – FuF
'attr_accessor'是一個用於定義實例變量訪問器的Ruby方法。 Rails(4.0之前)有用於參數保護的'attr_accessible'方法。他們經常混在一起。當你調用'attr_accessor'時,你搞砸了你的領域的Rails訪問器。 – marvelousNinja
基本上,'ActiveRecord'神奇地爲數據庫中的列定義了getter/setter方法。當你執行'attr_accessor:name'時,你用常規的ruby getter/setter方法覆蓋那些只獲取/設置實例變量'@ name'的方法,它與數據庫字段沒有關聯。 – gregates