2014-11-25 4 views
0

사용자 (대행사)가 해당 사용자 (대행사)에 속한 다른 사용자 .인증 실패 : 이메일을 비워 둘 수 없습니다. 비밀번호를 비워 둘 수 없습니다. - 비어 있지 않습니다.

사용자 (클라이언트)를 만들기 위해 모든 자격 증명을 params를 통해 컨트롤러 작업에 전달하는 양식을 만들었습니다. 나는 그 자격 증명을 사용하여 새 사용자를 만들 때

그러나, 나는 다음과 같은 오류가 점점 오전 :

ActiveRecord::RecordInvalid in AddClientsController#new 

Validation failed: Email can't be blank, Password can't be blank 

app/controllers/add_clients_controller.rb:6:in new 

을하지만 명확 이메일과 비밀번호가 전달되는 볼 수 있습니다.

파라미터 :

{"utf8"=>"✓", 
"authenticity_token"=>"d1beVLphq5B5P51BxeVmSYS42NIgBb6m1mLtiQPc7SI=", 
"add_clients"=>{"name"=>"test 3", 
"email"=>"[email protected]", 
"password"=>"[FILTERED]", 
"password_confirmation"=>"[FILTERED]", 
"role"=>"agent_admin"}, 
"commit"=>"Submit"} 

add_clients_controller.rb

class AddClientsController < ApplicationController 
    def index 
    end 

    def new 
    current_user.clients.create!({:email => params[:email], :name => params[:name], :password => params[:password], :password_confirmation => params[:password_confirmation]}) 
    redirect_to dashboards_path 
    end 


    def secure_params 
    params.permit(:email, :name, :password, :role) 
    end 
end 

index.html.erb

<div class="authform"> 
    <%= form_for(:add_clients, :url => {:action => 'new'}) do |f| %> 
    <h3>Add A New Client</h3> 

    <div class="form-group"> 
     <%= f.label :name %> 
     <%= f.text_field :name, :autofocus => true, class: 'form-control' %> 
    </div> 
    <div class="form-group"> 
     <%= f.label :email %> 
     <%= f.email_field :email, :autofocus => true, class: 'form-control' %> 
    </div> 
    <div class="form-group"> 
     <%= f.label :password %> 
     <%= f.password_field :password, class: 'form-control' %> 
    </div> 
    <div class="form-group"> 
     <%= f.label :password_confirmation %> 
     <%= f.password_field :password_confirmation, class: 'form-control' %>  
    </div> 
    <div class="form-group"> 
     <%= f.select(:role, User.roles.keys.map {|role| [role.titleize,role]}) %> 
    </div> 
    <%= f.submit 'Submit', :class => 'button right' %> 
    <% end %> 
</div> 

의 형태 여기

요청 발 PARAMS있다 insi 들어 clients.create에 GHT, 여기에 사용자 모델과 매개 변수의 덤프처럼 관계 모델

User.rb

class User < ActiveRecord::Base 
    # Declare an enum attribute where the values map to integers in the database, but can be queried by name. 
    enum role: [:application_admin, :agency_master, :agency_admin, :agent_admin, :client_admin, :agent_user, :client_user] 
    after_initialize :set_default_role, :if => :new_record? 

    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
    serialize :adwords_token 
    has_many :client_relationships, foreign_key: 'client_id'                      
    has_many :clients, through: :client_relationships                        
    has_many :agent_relationships, class_name: 'ClientRelationship', foreign_key: 'agency_id'              
    has_many :agencies, through: :agent_relationships 

    #Added params role was self.role 
    def set_default_role 
    self.role ||= :agency_master 
    end 

end 

client_relationship.rb

class ClientRelationship < ActiveRecord::Base 
    belongs_to :agency, class_name: "User", foreign_key: 'client_id'                    
    belongs_to :client, class_name: "User", foreign_key: 'agency_id' 
end 
+0

stacktrace는 오류 11 행에 있지만 컨트롤러 코드에 해당 행에 새로운 작업이 없으므로 전체 컨트롤러 코드를 추가하십시오. 그래도 나는 새로운 행동으로 잘못된 것을 발견하지 못한다. – jvnill

+0

답장을 보내 주셔서 감사합니다. 그것은 전체 컨트롤러 코드입니다. 나는 왜 그것이'6' 대신'11'을 말했는지 전혀 모른다. 열려있는 창에서 이전 오류의 추적을 복사했을 수도 있습니다. 지금은 맞습니다. – macoughl

+0

예외가 발생한 행은 무엇입니까? –

답변

0

보여, 해시입니다 이후 값은 "add_clients"내에 중첩됩니다.

"add_clients"=>{ 
    "name"=>"test 3", 
    "email"=>"[email protected]", 
    ... 
} 

값을 얻으려면 의, 말, 이메일, 코드가 될 것이다 params[:add_clients][:email] 등 나는 또한뿐만 아니라 당신이 당신의 코드를 설립 패턴의 번호를 깨는 것 같은 레일에 RESTful routing/controllers을 구성하는 방법으로 Strong Parameters에 대한 문서를 체크 아웃 것이다 그러나

.

+0

감사합니다. 피트, 나는 그것을 놓친다 고 나는 믿을 수 없다. 추가 의견을 보내 주셔서 감사합니다. 이러한 분야를 개선하기 위해 노력하겠습니다. – macoughl

관련 문제