この質問と回答を使用して(Deviseでアカウントテーブルとユーザーテーブルの両方を使用)、サインアップするユーザーが同時にアカウントを作成する機能をアプリに正常に設定しました。現在、ユーザーとアカウントの2つのモデルがあります。ユーザーモデルにはaccount_id
フィールドがあります。
現在、このユーザー(つまり、アカウントを作成する最初のユーザー)をデフォルトで管理者にする方法に苦労しています。ユーザーモデルに管理フィールドがあります(これは、単一のユーザーモデルを使用するように設定されたActiveAdminで使用するためのものです)。
第二に、管理者ユーザーが他のユーザーを作成する方法を理解するための複数の投稿があることを知っていますが(私はまだDeviseで作業しようとしています)、他のユーザーがすべて割り当てられるように誰かが最も簡単な方法で私を導くことができます同じaccount_id
。CanCanを使用して、管理者と非管理者がActiveAdminとアプリケーション一般の両方でアクセスできるものを制御することを計画しています。
どんな援助も大歓迎です。
私の現在のモデルは次のとおりです。
アカウントモデル
class Account < ActiveRecord::Base
has_many :users, :inverse_of => :account, :dependent => :destroy
accepts_nested_attributes_for :users
attr_accessible :name, :users_attributes
end
ユーザーモデル
class User < ActiveRecord::Base
belongs_to :account, :inverse_of => :users
validates :account, :presence => true
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
end
私のコントローラーは次のとおりです。
アカウントコントローラー
class AccountsController < ApplicationController
def new
@accounts = Account.new
@accounts.users.build
end
def create
@account = Account.new(params[:account])
if @account.save
flash[:success] = "Account created"
redirect_to accounts_path
else
render 'new'
end
end
end
ユーザーコントローラー
class UsersController < ApplicationController
before_filter :authenticate_user!
load_and_authorize_resource # CanCan
def new
@user = User.new
end
def create
@user.skip_confirmation! # confirm immediately--don't require email confirmation
if @user.save
flash[:success] = "User added and activated."
redirect_to users_path # list of all users
else
render 'new'
end
end
end