在我的Rails应用程序中,我有一个代表我系统用户的类。但是有些属性不属于本课程,我想在current_user上设置它们。
我使用参数创建了一个attr_acessor,但此参数未包含在此current_user对象中。
如何在运行时更改current_user?我的意思是,不要修改属性值,但要为其添加新功能。
答案 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_accessor
和before_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 %>