사용자 (대행사)가 해당 사용자 (대행사)에 속한 다른 사용자 .인증 실패 : 이메일을 비워 둘 수 없습니다. 비밀번호를 비워 둘 수 없습니다. - 비어 있지 않습니다.
사용자 (클라이언트)를 만들기 위해 모든 자격 증명을 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
stacktrace는 오류 11 행에 있지만 컨트롤러 코드에 해당 행에 새로운 작업이 없으므로 전체 컨트롤러 코드를 추가하십시오. 그래도 나는 새로운 행동으로 잘못된 것을 발견하지 못한다. – jvnill
답장을 보내 주셔서 감사합니다. 그것은 전체 컨트롤러 코드입니다. 나는 왜 그것이'6' 대신'11'을 말했는지 전혀 모른다. 열려있는 창에서 이전 오류의 추적을 복사했을 수도 있습니다. 지금은 맞습니다. – macoughl
예외가 발생한 행은 무엇입니까? –