rails - 使用devise登陆
发表于:,更新于:,By Sally
在我们的项目中,需要后台管理员创建用户,然后该用户只有登陆的功能。
- 假设company是原有的一个模型,现在它需要登陆功能
1 | rails generate devise COMPANY |
这时,如果没有配置路由,那么在创建company时,是走的devise/create方法,而devise并没有我们自己声明的某些属性。(而且存在一些概率事件:有时可以创建成功,但是字段不全;有时根本创建不成功,不查看log不知道问题出在哪里)
1
2
3
4
5
6
7
8
9// 这里不使用devise的方法,使用定制的new
devise_for :companies, :controller => {:new => "company/registrations"}
// scaffold生成的new,create,update就不能用了,要创建,就需要重新定义routes
resources :companies do
collection do
post :create_company
put :update_company
end
end没有定制视图,登陆的界面,还在app/views/devise/sessions/new.html.erb
登陆动作,也是使用devise的
devise
基本用法
- 添加gem
1 | gem 'devise' |
运行
bundle install
安装安装完,初始化一下
1 | rails generate devise:install |
- 生成模型 : 模型可以是已有模型,也可以是创建一个新模型
1 | rails generate devise MODEL |
- 生成视图,以便定制
1 | rails generate devise:views users |
- 定制congroller
1 | reail generate devise:controllers [scope] |
1 | rails generate devise:controllers [users] |
- 声明定制controller的路由
1 | devise_for :users, controllers: {sessions: "users/sessions"} |
- 等等其他具体的操作,看github。