我有两个模型,它们之间有很多通过关联,如下所示:
TipoDocumento < ActiveRecord::Base
has_many :dependencias
has_many :TipoRequisitos, :through => :dependencias
...
end
TipoRequisito < ActiveRecord::Base
has_many :dependencias
has_many :TipoDocumentos, :through => :dependencias
...
end
Dependencia < ActiveRecord::Base
belongs_to: TipoDocumento
belongs_to: TipoRequisito
...
end
连接模型 Dependencia 的 id 属性是 TipoDocumento_id 和 TipoRequisito_id。
现在,当我在 rails 控制台中尝试这个时:
x = TipoDocumento.find(1)
x.TipoRequisitos
我收到此错误:
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: dependencia.tipo_documento_id: SELECT "tipo_requisitos".* FROM "tipo_requisitos" INNER JOIN "dependencia" ON "tipo_requisitos"."id" = "dependencia"."TipoRequisito_id" WHERE "dependencia"."tipo_documento_id" = 1
如果我用 TipoRequisito 尝试相反的方法,也是一样的。
似乎 Rails 在执行查询时以某种方式更改了 Tipo_documento_id 的 TipoDocumento_id 列名。因此,我尝试将 id 列的名称从他们的 CamelCase 更改为他们的 snake_case,但我得到了模拟错误(找不到 TipoDocumento_id 或 TipoRequisito_id。)
我看不出有什么问题。