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