0

3 番目のモデル user_role を持つ User と Role の 2 つのモデルがあります。作成中にユーザーにいくつかの役割を割り当てたい。ユーザーは多くの役割を持つことができ、役割は多くのユーザーに割り当てることができます。ロール テーブルにマネージャーや管理者などのロールを作成しました。ユーザーを作成するときと同様に、これらの保存されたレコードをユーザー ページのドロップダウン リストに表示する必要があります。ユーザーとロールモデルの間には多対多の関連があります。

私がやったこと:ロールテーブルにmanager、hr、amdinなどのロール名としてデータを保存しました。

疑念:ユーザーの作成中にこれらの保存されたレコードをユーザーページのドロップダウンリストに表示し、ユーザーレコードで保存したいと考えています。ドロップダウン リストのユーザー ページで Roles テーブル データを取得し、それを Role テーブルに保存する方法がわかりません。

user.rb

class User < ActiveRecord::Base
 has_many :roles,  :through => :role_users
 has_many :roles_users
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :username, :email, :password, :password_confirmation, 
  :remember_me, :first_name, :last_name, :is_admin, :contact_no, :birth_date,
   :joining_date, :is_active, :is_hr, :is_manager, :user_code, :designation
  # attr_accessible :title, :body
end

role.rb

  class Role < ActiveRecord::Base
      attr_accessible :name
      has_many :users,  :through => :role_users
      has_many :role_users
    end

role_user.rb



 class RolesUser < ActiveRecord::Base
      attr_accessible :role_id, :user_id
      belongs_to :user 
      belongs_to :role
    end

roles_controller.rb

class RolesController < ApplicationController
  before_filter :authorize_admin!

    def index
        @roles = Role.all
    end

    def new
     @role = Role.new 
    end

    def create
      @role  = Role.new(params[:role])
         if @role.save
           flash[:success] = "role created!"
           redirect_to role_path(@role)
       else
            render 'new' 
        end 
    end

    def show
      @role = Role.find(params[:id])
    end

    def edit
      @role = Role.find(params[:id])
    end

    def update
      @role = Role.find(params[:id])
    if @role.update_attributes(params[:role])
        flash.notice = "Role #{@role.name} has been updated"
        redirect_to role_path(@role)
    else 
       render 'edit'
    end
   end 

    def destroy
      @role = Role.find(params[:id])
      @role.destroy
     redirect_to action:  'index' 
    end
end 

基本的に、Roles テーブルからデータを取得して、Users テーブルのドロップダウン リストに入れ、ユーザーの作成中に保存したいと考えています。誰でも私を助けることができますか?貼り付けるコードがさらに必要な場合は、お知らせください。

4

2 に答える 2