我申请了TODO List。
我安装了这个设计并想定义两种用户:
1) admin
2) worker
所以我将创建管理控制器。同时,我创建了 user_controller。
我想强制登录,以便让工作人员更新他的任务(完成与否),所以我尝试了:
class WorkersController < ApplicationController
before_filter :authenticate_user!
ps,我的模型名称是user.rb:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :lockable, :timeoutable, :confirmable and :activatable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation
# attr_accessible :title, :body
end
但是,:authenticate_user!是不行的。即使我注销,我也可以创建任务。
之后,我必须知道登录用户的邮件是什么(以便更新他的任务)。所以我必须写一些类似的东西:
def index
@email = params[:session][:email]
但我得到一个错误:
NoMethodError in WorkersController#index
undefined method `[]' for nil:NilClass
Rails.root: /home/alon/projects/TODOLIST
Application Trace | Framework Trace | Full Trace
app/controllers/workers_controller.rb:8:in `index'