誰かが私が行方不明になっている単純なことでこれに答えるとき、私はおそらくかなりばかげていると思うでしょう...しかし、ここに行きます:
Rails 3ベータ版に新しいアプリがあり、認証にdeviseを使用しています。すべてのコメントを実行し、すべてが現在完全に機能しています。ユーザーロールと管理者ロールを作成しました(これらの指示に従って: https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-Role )and I '自分を最初のユーザーとして登録しましたが、管理者ロールのユーザーを登録または作成するにはどうすればよいですか?devise guysからの指示により、管理者ロールは登録不可に設定されますが、登録できませんか?!
助けていただければ幸いです!ありがとう!
うん。バカだ.
他の誰かが同様に無駄な瞬間を過ごしている場合。 Railsコンソールを使用して、管理ユーザーを作成します。
➡ Rails c
Loading development environment (Rails 3.0.0.beta3)
irb(main):001:0> admin = Admin.create! do |u|
irb(main):002:1* u.email = '[email protected]'
irb(main):003:1> u.password = 'password'
irb(main):004:1> u.password_confirmation = 'password'
irb(main):005:1> end
それでできます。次に、管理者のサインインパスにアクセスしてサインインします。
あなたが本当にやろうとしているのは、シードデータを作成することです。これを行うより標準的な方法は、シードユーザー(および格納している場合はロール)をdb/seeds.rbに追加することです。
Db/seeds.rbの例:
roles = Role.create([{name: 'super_admin'}, {name: 'staff'}, {name:'customer'}])
users = User.create([{email: '[email protected]', first_name: 'super', last_name: 'admin', password: '@dmin123', password_confirmation: '@dmin123', role: roles[0]}])
次に実行します:
rake db:seed
これはDeviseには当てはまらない可能性があります(ただし、そうなると思います)が、一般的に管理者ユーザーをシードしたいが、管理者パスワードをソース管理に保存したくない場合は、次のようにすることができます...
@user = User.find_by_email("[email protected]")
unless @user
# We are going to bypass both our assignment protection and validation
# so we aren't storing the password in source control.
#
# This doesn't replace the need to change the password occasionaly, both
# on the site and in source control.
@user = User.create do |u|
u.name = "Admin User"
u.email = "[email protected]"
u.password_digest = "$2a$10$DUv/IUiLB34jhi3j4Z8MwwcaDlBmFe3rvcdXSzPKLzBOAMmD53UqW"
end
@user.save(:validate => false)
# TODO make the user an admin
end
Password_digestを検索するパスワードを使用して、ユーザーをローカルに作成できます。
@Stewartあなたは正しいです。ユーザーモデルでadminフラグを使用することは許容され、多くの承認オプションと共存できます。これがどのように見えるかの例については、cancan docsのAbilityクラスをご覧ください。
def initialize(user)
if user.admin?
can :manage, :all
else
can :read, :all
end
end
複数の認証モデルを使用すると、機能が実際に異なる場合や、サブドメインをauthkeysに追加するなどの認証要件が異なる場合に役立ちます。
別のアプローチは、HABTMロール関係をユーザーに追加することです。 Tony Amoyalによる素敵なチュートリアルを次に示します。 http://www.tonyamoyal.com/2010/07/28/Rails-authentication-with-devise-and-cancan-customizing-devise-controllers/
テーブルにデータを取り込む便利な方法があります- db/seed.rb file。ユーザーを作成するためのスクリプトを追加して実行するだけです:
rake db:seed
以下に、User
およびemail
フィールドを持つusername
モデルの例を示します。
# Inserting default security users
users = {
admin: {
username: 'admin',
email: '[email protected]',
password: 'adminpass',
password_confirmation: 'adminpass',
is_admin: true
},
administrator: {
username: 'administrator',
email: '[email protected]',
password: 'administrator',
password_confirmation: 'administrator',
is_admin: true
}
}
users.each do |user, data|
user = User.new(data)
unless User.where(email: user.email).exists?
user.save!
end
end
ここで、デバイスの検証が適用されることに注意してください。
/ sign_inを管理パスに追加してみてください。設定するものは何でも...私の場合は