首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rails Clearance gem将自定义列添加到用户模型

使用rails Clearance gem将自定义列添加到用户模型
EN

Stack Overflow用户
提问于 2012-03-22 05:51:22
回答 2查看 948关注 0票数 1

我使用Clearance gem为我的网站添加身份验证。标准用户模型如下所示:

代码语言:javascript
复制
class User < ActiveRecord::Base
  include Clearance::User
end

现在,我想向用户模型添加更多属性。我创建了这个迁移:

代码语言:javascript
复制
class AddCustomernameToUsers < ActiveRecord::Migration
  def change
    add_column :users, :customername, :string
  end
end

在rake db:migrate之后,数据库现在又多了一列:customername

作为下一步,我编辑了用户模型文件,使其如下所示:

代码语言:javascript
复制
class User < ActiveRecord::Base
  include Clearance::User
  attr_accessor :customername
end

下一步,我注册了一个新用户,并使用sqlite数据库浏览器在该用户的customer name字段中添加了测试字符串'charly‘。

在我的控制器中,我现在希望创建一个user对象并将其打印出来,以查看是否存在所有数据。

代码语言:javascript
复制
thisUser = User.find(current_user.id)
puts thisUser.inspect

控制台输出为:

代码语言:javascript
复制
#<User id: 1, email: "test@test.de", encrypted_password: "0494a9b3b692acaea96ab57bed500adf26dbafa5", salt: "75c889d099438476204ce46b9cb406fb1f73423c", confirmation_token: nil, remember_token: "907b9bd600246d0b8dcc06a782457665f614b368", created_at: "2012-03-21 20:59:44", updated_at: "2012-03-21 21:12:59", customername: nil>

因此,customername为nil。不知何故,该字段的数据没有正确地从数据库中提取出来。

我做错了什么?

对不起,我是rails初学者。这可能是一件非常简单的事情,但我花了很大力气搜索了一整天,就是不能让它工作,所以我求助于栈溢出的智慧。谢谢你们。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-08 15:40:17

在用户模型中不使用attr_accessor,而是使用attr_accesible :customername,它将会工作。因为如果没有attr_accessible,数据将不会保存在数据库中,这就是字段的值为空的原因。

票数 1
EN

Stack Overflow用户

发布于 2012-03-22 08:25:55

您确定在使用sqlite数据库浏览器时编辑的是正确的数据库吗?如果是这样的话,我会尝试修改您的用户创建代码,使其包含客户名称,而不是使用单独的工具添加它,并查看这是否有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9813409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档