以下のように、それらの間の関連付けを通じて多くのモデルを持つ2つのモデルがあります。
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 が見つかりません) が発生します。
何が悪いのかわかりません。