我有兩個型號,一個具有通過它們之間的關聯許多象下面這樣:問題與駝峯和下劃線的Rails 3
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
的ID,用於聯接模型Dependencia屬性TipoDocumento_id和TipoRequisito_id。
現在,當我嘗試這在鐵軌控制檯:如果我嘗試用TipoRequisito相反它是相同的
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
也:
x = TipoDocumento.find(1)
x.TipoRequisitos
我得到這個錯誤。
看來Rails在執行查詢時會改變tipo_documento_id的TipoDocumento_id列名稱。所以,我試圖將id列的名稱從他們的CamelCase更改爲他們的snake_case,但是我得到了模擬錯誤(找不到TipoDocumento_id或TipoRequisito_id。)
我看不出有什麼問題。
您不遵循導軌約定,因此您需要指定列的名稱。 – aromero 2013-05-12 22:37:34
遵循約定我需要改變什麼? – Jcao02 2013-05-12 22:56:30