我正在使用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:
答案 0 :(得分:1)
首先,在用户模型迁移中,是否将用户表的主键更改为usuario_id
?请参阅以下Stackoverflow问题:
其次,您是否确保覆盖了ActiveRecord模型中主键的命名约定?
这样的事情:
class User < ActiveRecord::Base
self.primary_key = "usuario_id"
end
有关详细信息,请参阅以下section in the Rails Guide。