Rails 5 - 无法从关联模型加载数据(belongs_to / has_one)

时间:2017-07-16 16:29:02

标签: ruby-on-rails ruby belongs-to has-one

我有以下方案:

class Rental < ApplicationRecord
  has_one :tenant
end
class Tenant < ApplicationRecord
  belongs_to :rental
end

因此,在rentals数据库表中,有一个名为tenant_id的列。

我想通过rental模型显示有关租户的数据,所以我尝试了这个:

@rental = Rental.find(params[:id])
puts @rental.tenant.inspect

但是出现了以下错误:

PG::UndefinedColumn: ERROR: column tenants.rental_id does not exist LINE 1: SELECT "tenants".* FROM "tenants" WHERE "tenants"."rental_i... ^ : SELECT "tenants".* FROM "tenants" WHERE "tenants"."rental_id" = $1 LIMIT $2

我在这里想念的是什么?我忘记在一个或另一个模型上添加东西吗?

1 个答案:

答案 0 :(得分:1)

Rails惯例是在belongs_to侧上设置外键。

在你的模特中

  • rental有一个tenant
  • tenant属于rental

...因此,您的tenants表格应该有一个rental_id列,而不是相反。

如果您不想更改数据库架构,还可以更改模型关系:

class Rental < ApplicationRecord
  belongs_to :tenant
end

class Tenant < ApplicationRecord
  has_one :rental
end