2016-04-16 15 views
-2

私はUserRoleの2つのモデルを持っています。 ユーザー属性は次のとおりです。別のテーブルの属性を表示

name:string 
email:string 
admin:boolean 
role_id:integer 

ロールの属性は次のとおりです。

designer:boolean 
developer:boolean 

私が設定している団体は、そのユーザーbelongs_to役割と役割has_manyユーザーです。 ユーザーがサインアップするとき、私は彼に自分のポジション(デザイナーかデベロッパーか)を選択させたい。しかし、私はrole_idを整数フィールドとして取得します。これは、デザイナーと開発者のポジションを表示したいときに選択します。誰もそれで私を助けることができますか?

+0

使用ビットに役立つことを願っています。私はあなたのデザインを再考することをお勧めします。 – jvillian

答えて

0

あなたがしたいことは、「Nested Models」と呼ばれます。

まず、あなたがこのような他のモデルを許可するようにモデルに指示する必要があり:

# app/model/user.rb 
class User < ActiveRecord::Base 
    belongs_to :role 
    accepts_nested_attributes_for :role 
end 

次の事はあなたのビュー

#app/views/users/new.html.ham 
= simple_form_for @user do |f| 
    = f.input :name 
    = f.input :email 
    %br 
    = f.simple_fields_for :role do |role| 
    = role.input :designer 
    = role.input :developer 
    = f.button :submit, "Send Message", :class => 'btn btn-primary btn-block' 

にある今、最後が、ボット、少なくとも次のことができるようにしますコントローラの新しいパラメータを受け入れる

class UsersController < ApplicationController 
    expose(:users){User.all.order(:id)} 
    expose(:user, attributes: :user_params) 

    def new 
    @user = User.new 
    @user.role.build 
    end 

    def create 
    if user.save 
     flash[:notice] = t(:user_was_successfully_created) 
     redirect_to root_path 
    else 
     render :new 
    end 
    end 

    private 
    def user_params 
    params.require(:user).permit(
     [ 
     :email , 
     :name , 
     role_attributes: [ 
      :designer, 
      :developer, 
     ] 
     ] 
    ) 
    end 
end 

サンプルアプリケーション`:管理者:boolean`、`デザイナー:boolean`、と `開発者は:boolean`は本当に私の目を傷つけることになり

は、私は、これは ハッピーハッキング

関連する問題