44

わかりました、誰かが私が欠けている単純なことでこれに答えるとき、私はおそらくかなりばかげていると感じるでしょうが...ここに行きます:

Rails 3ベータ版に新しいアプリがあり、認証にdeviseを使用しています。私はすべてのコメントを実行しましたが、現時点ではすべてが完全に機能しています。ユーザーロールと管理者ロールを作成し(次の手順:https ://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-Role )、自分自身をとして登録しました最初のユーザーですが、管理者ロールユーザーを登録または作成するにはどうすればよいですか?考案者からの指示により、管理者の役割は登録できないように設定されていますが、登録できない場合に管理者を作成する方法がわかりません。

どんな助けでもいただければ幸いです!ありがとう!

4

6 に答える 6

93

うん。私はばかげていると感じます。

他の誰かが同様に空虚な瞬間を過ごしている場合。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 = 'sample@sample.com'
irb(main):003:1> u.password = 'password'
irb(main):004:1> u.password_confirmation = 'password'
irb(main):005:1> end

それはそれを行います。管理者のサインイン パスにアクセスしてサインインするだけです。

于 2010-05-02T08:15:44.363 に答える
13

あなたが実際にやろうとしているのは、シードデータを作成することです。これを行うためのより標準的な方法は、シード ユーザー (および格納している場合はロール) を db/seeds.rb に追加することです。

db/seeds.rb の例:

roles = Role.create([{name: 'super_admin'}, {name: 'staff'}, {name:'customer'}])
users = User.create([{email: 'super@test.com', first_name: 'super', last_name: 'admin', password: '@dmin123', password_confirmation: '@dmin123', role: roles[0]}])

次に実行します。

rake db:seed
于 2012-06-08T09:27:02.627 に答える
5

これは Devise には当てはまらないかもしれませんが (そうなると思います)、一般に、管理者ユーザーをシードしたいが、管理者パスワードをソース管理に保存したくない場合は、次のようなことができます...

@user = User.find_by_email("admin@email.com")

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 = "admin@email.com"
    u.password_digest = "$2a$10$DUv/IUiLB34jhi3j4Z8MwwcaDlBmFe3rvcdXSzPKLzBOAMmD53UqW"
  end

  @user.save(:validate => false)

  # TODO make the user an admin
end

password_digest を見つけたいパスワードを使用して、ローカルでユーザーを作成できます。

于 2011-09-12T22:38:13.230 に答える
3

@スチュワートあなたは正しいです。ユーザー モデルで管理フラグを使用することは許容され、多くの承認オプションと共存できます。これがどのように見えるかの例については、cancan ドキュメントの Ability クラスを見てください。

def initialize(user)
  if user.admin?
    can :manage, :all
  else
    can :read, :all
  end
end

複数の認証モデルを持つことは、機能が実際に異なる場合、またはサブドメインを認証キーに追加するなどの認証の要件が異なる場合に役立ちます。

もう 1 つの方法は、HABTM ロール関係をユーザーに追加することです。Tony Amoyal によるすばらしいチュートリアルは次のとおりです

于 2010-11-08T22:17:58.890 に答える
0

管理者パスに /sign_in を追加してみてください。設定に関係なく...私のものは

http://yoursite.com/admin/sign_in?unauthenticated=true

于 2010-04-26T17:47:42.607 に答える