1

私はユーザー、ロケーション、フォローのテーブルを持っています。ここで、ユーザーは :through => :follows を持っています。ユーザーと場所の両方に属します。Follows テーブルに行を追加したいと考えています。つまり、ユーザーと場所の間に次の関係を作成します。

これを行う方法がわかりません。または、Follows を正しく実装しているかどうかもわかりません。

class CreateFollows < ActiveRecord::Migration
   def change
     create_table :follows |do| t
      t.references :user_id
      t.references :location_id
      t.timestamps
     end
   end
end

そして、userid と locationid を指定して、Follows 関係を追加するために使用しようとしているコードは次のとおりです。

newFollow = Follow.new(:user_id => userid, :location_id => locationid)
newFollow.save

エラー不明な属性が表示されます: user_id.

何か案は?私は本当に立ち往生しています。本当にありがとう!

4

1 に答える 1

4

移行でreferencesは、 はフィールド名に を付けずに_id追加_idする必要があります。現在、 と の 2 つの列を作成していuser_id_idますlocation_id_id

これらの行の代わりに...

t.references :user_id
t.references :location_id

...次の行が必要です:

t.references :user
t.references :location

そして、列名を修正したら...

「スルー」テーブルに手動でレコードを作成する必要はありません。ユーザーと場所があり、関連付けが正しく設定されているhas_many follows; has_many :locations, through: :follows場合 ( )、単純に使用できます。

user.locations << location

これにより、参加レコードが自動的に作成されます。

于 2012-10-02T05:18:07.213 に答える