Rails模型用户ID PG错误:NotNullViolation

时间:2014-06-25 17:32:53

标签: ruby-on-rails postgresql ruby-on-rails-4 devise postgresql-9.3

我正在使用rails 4,postgres 9.3并设计,在注册用户时,我收到错误:

    PG::NotNullViolation: ERROR: the null value for column « usuario_id » violates the constraint not null. 

表或模型usuario的主键或ID是usuario_id,它是一个整数。

我知道它违反了de约束,但是如何在不通过注册表单输入ID的情况下自动增加ID?

我没有进行迁移,因为我已经拥有了postgres中的表格。我添加的唯一列是设计列。无论如何这是postgresql的表。

                           Tabla «public.usuario»
    Column         |            Type            |                  Modifiers                   
------------------------+-----------------------------+---------------------------------
usuario_id             | integer                     | not null
comuna_id              | integer                     | not null
usuario_nombre         | character(256)              | 
usuario_apellidopat    | character(256)              | 
usuario_apellidomat    | character(256)              | 
usuario_rut            | character varying(1024)     | 
email                  | character varying(1024)     | 
usuario_nombre_usuario | character(256)              | 
password               | character varying(128)      | 
usuario_vip            | boolean                     | 
usuario_calle          | character varying(128)      | 
usuario_numero_calle   | smallint                    | 
usuario_villa          | character varying(128)      | 
usuario_numero_depto   | smallint                    | 
usuario_bloque         | smallint                    | 
encrypted_password     | character varying(255)      | not null valor por omisión      
reset_password_token   | character varying(255)      | 
reset_password_sent_at | timestamp without time zone | 
remember_created_at    | timestamp without time zone | 
sign_in_count          | integer                     | not null valor por omisión 0
current_sign_in_at     | timestamp without time zone | 
last_sign_in_at        | timestamp without time zone | 
current_sign_in_ip     | character varying(255)      | 
last_sign_in_ip        | character varying(255)      | 
confirmation_token     | character varying(255)      | 
confirmed_at           | timestamp without time zone | 
confirmation_sent_at   | timestamp without time zone | 
unconfirmed_email      | character varying(255)      | 
 Índexes:
"pk_usuario" PRIMARY KEY, btree (usuario_id)
"index_usuario_on_reset_password_token" UNIQUE, btree (reset_password_token)
"usuario_pk" UNIQUE, btree (usuario_id)
"relationship_34_fk" btree (comuna_id)
Foreign key constraints:
"fk_usuario_relations_comuna" FOREIGN KEY (comuna_id) REFERENCES comuna(comuna_id) ON UPDATE RESTRICT ON DELETE RESTRICT
Referenced by:
TABLE "compra_remate" CONSTRAINT "fk_compra_r_relations_usuario" FOREIGN KEY (usu_usuario_id) REFERENCES usuario(usuario_id) ON UPDATE RESTRICT ON DELETE RESTRICT
TABLE "compra_remate" CONSTRAINT "fk_compra_r_relations_usuario2" FOREIGN KEY (usuario_id) REFERENCES usuario(usuario_id) ON UPDATE RESTRICT ON DELETE RESTRICT
TABLE "compra_venta_especial" CONSTRAINT "fk_compra_v_relations_usuario" FOREIGN KEY (usu_usuario_id) REFERENCES usuario(usuario_id) ON UPDATE RESTRICT ON DELETE RESTRICT
TABLE "compra_venta_normal" CONSTRAINT "fk_compra_v_relations_usuario" FOREIGN KEY (usu_usuario_id) REFERENCES usuario(usuario_id) ON UPDATE RESTRICT ON DELETE RESTRICT
TABLE "compra_venta_especial" CONSTRAINT "fk_compra_v_relations_usuario2" FOREIGN KEY (usuario_id) REFERENCES usuario(usuario_id) ON UPDATE RESTRICT ON DELETE RESTRICT
TABLE "compra_venta_normal" CONSTRAINT "fk_compra_v_relations_usuario2" FOREIGN KEY (usuario_id) REFERENCES usuario(usuario_id) ON UPDATE RESTRICT ON DELETE RESTRICT
TABLE "notificacion" CONSTRAINT "fk_notifica_relations_usuario" FOREIGN KEY (usuario_id) REFERENCES usuario(usuario_id) ON UPDATE RESTRICT ON DELETE RESTRICT
TABLE "prod_of_nec" CONSTRAINT "fk_prod_of__relations_usuario" FOREIGN KEY (usuario_id) REFERENCES u:

1 个答案:

答案 0 :(得分:1)

首先,在用户模型迁移中,是否将用户表的主键更改为usuario_id?请参阅以下Stackoverflow问题:

其次,您是否确保覆盖了ActiveRecord模型中主键的命名约定?

这样的事情:

class User < ActiveRecord::Base
  self.primary_key = "usuario_id"
end

有关详细信息,请参阅以下section in the Rails Guide