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

时间:2012-03-21 21:51:22

标签: activerecord ruby-on-rails-3.2 clearance

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

class User < ActiveRecord::Base
  include Clearance::User
end

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

class AddCustomernameToUsers < ActiveRecord::Migration
  def change
    add_column :users, :customername, :string
  end
end

在rake db:migrate之后,数据库现在还有一个列:customername

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

class User < ActiveRecord::Base
  include Clearance::User
  attr_accessor :customername
end

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

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

thisUser = User.find(current_user.id)
puts thisUser.inspect

控制台输出是:

#<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>

因此客户名称为零。不知何故,这个字段的数据没有正确地从数据库中拉出来。

我做错了什么?

对不起,我是铁杆初学者。可能是一件非常简单的事情,但是我整天都在努力搜索并且无法使它工作,所以我转向堆栈溢出的智慧。 谢谢你们。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

使用attr_accesible:customername而不是在User模型中使用attr_accessor,它将起作用。因为没有attr_accessible,数据将不会保存在您的数据库中,这就是您获得该字段的nil值的原因。