【问题标题】:Using and id predefined by an sql model in rails 4.0在rails 4.0中使用sql模型预定义的id
【发布时间】:2014-06-25 07:04:37
【问题描述】:

我刚开始使用 Rails,但我一直在努力解决这个问题。

问题是当我尝试登录时出现以下错误。(我正在使用设计)

ActiveRecord::StatementInvalid in Devise::RegistrationsController#create

PG::UndefinedColumn: ERROR: no existe la columna usuario.id LINE 1: ...b4c1d3674118467080c9d5ae9b1d67353f050b' ORDER BY "usuario".... ^ : SELECT "usuario".* FROM "usuario" WHERE "usuario"."confirmation_token" = '6e4568f260aa4a6524bebb77feb4c1d3674118467080c9d5ae9b1d67353f050b' ORDER BY "usuario"."id" ASC LIMIT 1

问题是,当我在 postgres 中访问表 usuario 时,主键或 ID 被称为 usuario_id 而不是 id

我不知道为什么 Rails 只接受 id

如果有人可以帮助我如何改变这一点,那将非常有帮助。

【问题讨论】:

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


    【解决方案1】:

    您可以在模型中使用 primary_key= 设置器设置主键列名称:

    # app/models/user.rb
    class User < ActiveRecord::Base
      self.primary_key = 'usuario_id'
    end
    

    【讨论】:

    • 那个工作的人!但现在我得到了 PG 的错误。 PG::NotNullViolation: 错误: «usuario_id» 列的空值违反了非空限制。我知道它违反了限制,我怎样才能在不通过注册表单输入的情况下自动增加 ID?
    • 另外,当我在 Postgres 中转到 \d usuario 时,我会为 table usuario 得到这个。列类型修饰符 usuario_id |整数 |不为空
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    相关资源
    最近更新 更多