0

私は2つのモデルを持っています。会社とデバイス ユーザーである master_user。会社コントローラーの作成アクションで会社オブジェクトを作成しようとすると、許可されていないパラメーター master_user が表示されます。

モデルは

company.rb

class Company < ActiveRecord::Base
    has_many :users
    has_one :master_user
    accepts_nested_attributes_for :master_user

end


master_user.rb

class MasterUser < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  belongs_to :company
end

これが私の会社の見解です

<%= form_for(@company) do |f| %>
  <% if @company.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@company.errors.count, "error") %> prohibited this company from being saved:</h2>

      <ul>
      <% @company.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>




  <%= f.fields_for @company.master_user do |m_user| %> 
   <div class="field">
    <%= m_user.label :email %>
    <%= m_user.text_field :email %>
   </div>

   <div class="field">
      <%= m_user.label :password %>
      <%= m_user.password_field :password %>
   </div>

   <div class="field">
      <%= m_user.label :confirm_password %>
      <%= m_user.password_field :confirm_password %>
   </div>

  <% end %>
  <div class="actions">
    <%= f.submit %>
  </div>


<% end %>

と会社のコントローラー

# GET /companies/new
  def new
    @company = Company.new
    @company.build_master_user
  end


  # POST /companies
  # POST /companies.json
  def create
    puts "a"
    @company = Company.new(company_params)
    puts "b"
    respond_to do |format|
      if @company.save
        format.html { redirect_to @company, notice: 'Company was successfully created.' }
        format.json { render action: 'show', status: :created, location: @company }
      else
        puts "c"
        format.html { render action: 'new' }
        format.json { render json: @company.errors, status: :unprocessable_entity }
      end
    end
  end

def company_params
      params.require(:company).permit(:id, :name, :isTrial, :employMax, master_user_attributes: [:id, :email, :password, :confirm_password, :company_id])
end

Rails 4 の要件に従ってパラメーターを許可しています。しかし、何らかの理由でまだ master_user を拒否しています

4

1 に答える 1

0

問題は、Rails 4 で強力なパラメーターを扱う Devise が、これらのパラメーターについて自動的に認識しないことです。この質問のように、彼にはっきりと伝えてください。

于 2013-10-30T07:06:49.183 に答える