在current_user设备中添加属性

时间:2016-07-01 22:48:39

标签: ruby-on-rails ruby devise

在我的Rails应用程序中,我有一个代表我系统用户的类。但是有些属性不属于本课程,我想在current_user上设置它们。

我使用参数创建了一个attr_acessor,但此参数未包含在此current_user对象中。

如何在运行时更改current_user?我的意思是,不要修改属性值,但要为其添加新功能。

1 个答案:

答案 0 :(得分:0)

根据您问题中的稀疏信息,我建议采用以下两种方式之一:

1)使用迁移向用户模型添加新属性。

请参阅:http://guides.rubyonrails.org/active_record_migrations.html

$ rails generate migration AddAttrToUsers whatever:string verified:boolean verfied_at:datetime
      invoke  active_record
      create    db/migrate/20160701234500_add_attr_to_users.rb
$ cat db/migrate/20160701234500_add_attr_to_users.rb 
class AddAttrToUsers < ActiveRecord::Migration
  def change
    add_column :users, :whatever, :string
    add_column :users, :verified, :boolean
    add_column :users, :verfied_at, :datetime
  end
end
$ rake db:migrate

-OR -

2)使用attr_accessorbefore_filter的组合。

请参阅:

_

# app/models/user.rb
class User < ActiveRecord::Base
  attr_accessor :some_attr
end

# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
  before_filter :add_attrs_to_current_user

  def add_attrs_to_current_user
    current_user.some_attr = "rad!"
  end
end

# app/views/users/show.html.erb
<%= current_user.some_attr %>