0

現在、ユーザー、プロパティ、テナントの 3 つのモデルがあります。プロパティを作成すると、関連付けを介して 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 をテナントに渡そうとすると問題が発生します。関連付けのいくつかの組み合わせを試しましたが、何も機能していないようです。

私のテナント データベースには property_id 列があり、手動で property_id を追加すると、すべて正常に機能します。しかし、私ができるようにしたいのは、プロパティ内から「新しいテナント」をクリックすることであり、そのテナントはプロパティに関連付けられていますが、それは起こっていません。

次の方法で、テナントフォーム内の非表示フィールドにproperty_idを渡そうとしました。

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

しかし、これもうまくいきませんでした。

どんな提案でも、私の正気の残りを救うでしょう。

ありがとう、トニー。

4

1 に答える 1

0

belongs_toモデルに、 などを追加するhas_manyだけでは、データベースに関係を作成するには不十分です。*_idそれらが行うことは、データベースに既に存在するフィールドを見て、作成する関連付けを Rails に伝えることです。

Tenant テーブルにproperty_idof タイプがあることを確認する必要があります。Integer持っていない場合は、移行を生成して追加できます。

rails g migration add_property_id_to_tenants property_id:integer

そして実行rake db:migrate中(これらの列が欠落している場合は、他のモデルでも同様です)

于 2012-11-14T00:16:59.360 に答える