如何关联3个模型

时间:2012-11-13 23:54:12

标签: ruby-on-rails ruby railstutorial.org

我目前有三种型号,用户,财产,租户。当我创建一个属性时,user_id通过关联传递给属性:

class User
  has_many :properties
end

class Property
  belongs_to :user
  has_many :tenants
end

class Tenant
  belongs_to :property
end

我在尝试将property_id传递给租户时遇到了问题。我尝试了几种关联组合,但似乎没有任何效果。

我的租户db有一个property_id列,我可以手动添加一个property_id,一切正常。但我想要做的是点击一个房产内的“新租户”,然后租户与该房产相关联,但它没有发生。

我甚至尝试通过以下方式将property_id传递到租户表单中的隐藏字段:

<%= render :partial => 'shared/new_tenant', :locals => { :tenant => Tenant.new(:property_id => @property.id) } %>

但这也没有用。

任何建议都会挽救我的理智。

谢谢, 贝。

1 个答案:

答案 0 :(得分:0)

在模型中添加belongs_tohas_many等不足以在数据库中创建关系。他们所做的是通过查看数据库中已有的*_id字段来告诉Rails要建立哪些关联。

您需要确保租户表中的property_id类型为Integer。如果您没有,可以通过生成迁移来添加它:

rails g migration add_property_id_to_tenants property_id:integer

然后运行rake db:migrate(如果他们也缺少这些列,则类似于其他模型)