首先,這裏是我的ruby和rails版本,其中包含一些重要的gem版本。Ruby on Rails - 過濾@變量在登錄之間持續存在
- 的Ruby 1.9.3-P125
- 的Rails 3.2.2
- 設計2.0.4
- 慘慘1.6.7
我用從丹尼爾·基歐模板拿到項目快速運行。
$ rails new myapp -m https://raw.github.com/RailsApps/rails3-application-templates/master/rails3-devise-rspec-cucumber-template.rb -T
我的問題:
我爲創建新的用戶和擁有這種能力的兩個角色的管理部分。我有一個要求,管理員用戶不應該能夠創建superadmin用戶。
當管理員登錄並單擊新用戶按鈕時,角色列表將被過濾以刪除superadmin選項,如果我註銷admin角色並以超級管理員身份登錄,然後創建用戶,我將從管理員。如果我刷新5-6次,我會得到正確過濾的列表。
用戶模型
# /app/models/user.rb
class User < ActiveRecord::Base
ROLES = {
superadmin: 'superadmin',
admin: 'admin'
}
def role?(role)
self.role == role.to_s
end
end
用戶控制器
# /app/controllers/admin/users_controller.rb
module Admin
class UsersController < BaseController
load_and_authorize_resource
def new
@user = User.new
@roles = User::ROLES
if current_user.role? :admin
@roles.delete :superadmin
end
end
end
end
查看
# /app/views/admin/users/_form.html.haml
= form_for [:admin, @user], html: { class: 'form-horizontal' } do |f|
...
.control-group
= f.label :role, class: 'control-label'
.controls
= f.select :role, @roles, selected: :admin
如果任何人都可以在正確的方向,爲什麼@Roles點我是保持其價值之間登錄/註銷用戶具有不同的角色,但然後被清除,這將是真正的很有幫助的感謝,我已經在一個小時以上和其他一些人一樣陷入了困境。
謝謝,這個問題解決了。我有一種感覺是這個問題,但不知道如何解決這個問題。我嘗試.to_hash等,沒有工作:) – CoderHulk 2012-03-28 23:40:54