Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActiveRecord::语句在RegistrationController#create中无效_Ruby On Rails_Ruby_Postgresql_Activerecord_Devise - Fatal编程技术网

Ruby on rails ActiveRecord::语句在RegistrationController#create中无效

Ruby on rails ActiveRecord::语句在RegistrationController#create中无效,ruby-on-rails,ruby,postgresql,activerecord,devise,Ruby On Rails,Ruby,Postgresql,Activerecord,Devise,我一直被这个异常所困扰,我使用的是rails 4.2.5.1和ruby 2.3.0。我正在使用rails中的Desive创建一个模型。我已经重写了designe-create方法。我在postgres中遇到错误,因为PG::NotNullViolation:错误:“id”列中的null值违反了not null约束。我希望在传递参数的帮助下创建id。未创建ID。由于我是rails的新手,我现在已经困了好几个小时了 请求 参数: {"utf8"=>"✓", "authenticity_tok

我一直被这个异常所困扰,我使用的是rails 4.2.5.1和ruby 2.3.0。我正在使用rails中的Desive创建一个模型。我已经重写了designe-create方法。我在postgres中遇到错误,因为PG::NotNullViolation:错误:“id”列中的null值违反了not null约束。我希望在传递参数的帮助下创建id。未创建ID。由于我是rails的新手,我现在已经困了好几个小时了

请求 参数:

{"utf8"=>"✓",
 "authenticity_token"=>"SAiVJEULEa7RsieW+OTW1a/946f2xVbhA/sZWWn3KdX1Wt0Ozx+tq6eQfhTpaAJ+4Cxu2DMnPfqd0Vcle7ow0w==",
 "employee"=>{"email"=>"safi123@gmail.com",
 "first_name"=>"sss",
 "last_name"=>"dddnjnfj",
 "phone_number"=>"9944253677",
 "alternative_phone_number"=>"9659392682",
 "alternative_email_id"=>"dd@gmail.com",
 "date_of_joining"=>"12-02-2015",
 "date_of_birth"=>"03-02-1999",
 "status"=>"Active",
 "gender"=>"M",
 "blood_group"=>"A +"},
 "commit"=>"Sign up"}
class ApplicationController < ActionController::Base

  protect_from_forgery with: :exception
  before_action :authenticate_employee!


before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

    def configure_permitted_parameters
      devise_parameter_sanitizer.for(:sign_up) do |employee_params|
        employee_params.permit  :first_name, :last_name, :blood_group, :phone_number, :gender, :date_of_birth, :email, :alternative_email_id, :status, :date_of_joining, :alternative_phone_number
      end
      devise_parameter_sanitizer.for(:account_update) do |employee_params|
        employee_params.permit :first_name, :last_name, :blood_group, :phone_number, :gender, :date_of_birth, :email, :alternative_email_id, :status, :date_of_joining, :alternative_phone_number
      end
    end

end
应用程序控制器:

{"utf8"=>"✓",
 "authenticity_token"=>"SAiVJEULEa7RsieW+OTW1a/946f2xVbhA/sZWWn3KdX1Wt0Ozx+tq6eQfhTpaAJ+4Cxu2DMnPfqd0Vcle7ow0w==",
 "employee"=>{"email"=>"safi123@gmail.com",
 "first_name"=>"sss",
 "last_name"=>"dddnjnfj",
 "phone_number"=>"9944253677",
 "alternative_phone_number"=>"9659392682",
 "alternative_email_id"=>"dd@gmail.com",
 "date_of_joining"=>"12-02-2015",
 "date_of_birth"=>"03-02-1999",
 "status"=>"Active",
 "gender"=>"M",
 "blood_group"=>"A +"},
 "commit"=>"Sign up"}
class ApplicationController < ActionController::Base

  protect_from_forgery with: :exception
  before_action :authenticate_employee!


before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

    def configure_permitted_parameters
      devise_parameter_sanitizer.for(:sign_up) do |employee_params|
        employee_params.permit  :first_name, :last_name, :blood_group, :phone_number, :gender, :date_of_birth, :email, :alternative_email_id, :status, :date_of_joining, :alternative_phone_number
      end
      devise_parameter_sanitizer.for(:account_update) do |employee_params|
        employee_params.permit :first_name, :last_name, :blood_group, :phone_number, :gender, :date_of_birth, :email, :alternative_email_id, :status, :date_of_joining, :alternative_phone_number
      end
    end

end
class ApplicationController
注册控制器

class RegistrationsController < Devise::RegistrationsController
  def new
    super
  end
  def index
    @employees = Employee.all
  end
 def create
  @employee = Employee.new(employee_params)
    if @employee.save
      redirect_to :action => :new
    else
      render 'new'
    end
    @employee.save  
  end
    # Never trust parameters from the scary internet, only allow the white list through.
    def employee_params
      params.require(:employee).permit(:first_name, :last_name, :blood_group, :phone_number, :gender, :date_of_birth, :email, :alternative_email_id, :status, :date_of_joining, :alternative_phone_number)
    end

  def update
    super
  end
end
类注册控制器:new
其他的
呈现“新”
结束
@雇员储蓄
结束
#永远不要相信来自恐怖网络的参数,只允许白名单通过。
def雇员参数
参数要求(:员工)。许可(:姓名,:姓氏,:血型,:电话号码,:性别,:出生日期,:电子邮件,:备选电子邮件id,:状态,:加入日期,:备选电话号码)
结束
def更新
超级的
结束
结束
数据库架构:

{"utf8"=>"✓",
 "authenticity_token"=>"SAiVJEULEa7RsieW+OTW1a/946f2xVbhA/sZWWn3KdX1Wt0Ozx+tq6eQfhTpaAJ+4Cxu2DMnPfqd0Vcle7ow0w==",
 "employee"=>{"email"=>"safi123@gmail.com",
 "first_name"=>"sss",
 "last_name"=>"dddnjnfj",
 "phone_number"=>"9944253677",
 "alternative_phone_number"=>"9659392682",
 "alternative_email_id"=>"dd@gmail.com",
 "date_of_joining"=>"12-02-2015",
 "date_of_birth"=>"03-02-1999",
 "status"=>"Active",
 "gender"=>"M",
 "blood_group"=>"A +"},
 "commit"=>"Sign up"}
class ApplicationController < ActionController::Base

  protect_from_forgery with: :exception
  before_action :authenticate_employee!


before_filter :configure_permitted_parameters, if: :devise_controller?

  protected

    def configure_permitted_parameters
      devise_parameter_sanitizer.for(:sign_up) do |employee_params|
        employee_params.permit  :first_name, :last_name, :blood_group, :phone_number, :gender, :date_of_birth, :email, :alternative_email_id, :status, :date_of_joining, :alternative_phone_number
      end
      devise_parameter_sanitizer.for(:account_update) do |employee_params|
        employee_params.permit :first_name, :last_name, :blood_group, :phone_number, :gender, :date_of_birth, :email, :alternative_email_id, :status, :date_of_joining, :alternative_phone_number
      end
    end

end
我可以理解该ID没有生成,也没有存储在数据库中。这里有什么问题?谁能解释一下我犯了什么错误吗?

您正在保存两次员工记录。这可能是问题所在,请只保存一次。我已执行操作,请检查

def创建
@employee=employee.new(employee_参数)
如果@employee.save
重定向到:action=>:new
其他的
呈现“新”
结束
/*你又在这里救了我一命*/

结束
Hai,你试过这个吗?是的。。我试过了。。但它正在为#抛出另一个未定义的异常方法'present'。你是说?目前必须通过传递参数来创建presenceID。对吗?在这里,我们手动提供要存储的ID。您说您希望使用参数创建ID,所以我的回答是这样的。如果不是,则将更改。请还原下一票。我想在我传递的参数的帮助下创建ID。