Rails:当foreign_key现在遵循约定

时间:2015-07-27 14:20:44

标签: ruby-on-rails activerecord querying

表格

声明 belongs_to 城镇

模型

外键不遵循惯例,因为它更清晰,我将来应该与同一个表有多个关系。

class Claim < ActiveRecord::Base
  belongs_to :risk_town,    class_name: "Town"
end

查询

当我尝试通过城镇邮政编码过滤索赔时,我使用此查询:

Claim.joins(:risk_town).where(risk_town:{postal_code:70000})

出现此错误

ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: risk_town.postal_code
SELECT "claims".* FROM "claims" INNER JOIN "towns" ON "towns"."id" = "claims"."risk_town_id" WHERE "risk_town"."postal_code" = ?  [["postal_code", "70000"]]

我不明白为什么导轨不能用于别名&#34;城镇&#34;匹配我的关系名称&#34; risk_town&#34;。

这种情况有哪些解决方法?

由于

1 个答案:

答案 0 :(得分:3)

Claim.joins(:risk_town).where(towns:{postal_code:70000})

表名称为towns而不是risk_town

joins内部指定关联,在where内指定表名