1

我有表用户、位置和关注,其中用户有_许多位置:通过 =>:关注。关注属于用户和位置。我想在 Follows 表中添加一行,即在用户和位置之间创建 Follow 关系。

我不确定如何执行此操作,或者我是否正确实施了以下操作:

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

给定用户 ID 和位置 ID,我试图用来添加关注关系的代码是

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

我收到错误未知属性:user_id。

有任何想法吗?我真的被困住了。非常感谢!

4

1 回答 1

4

在迁移中,references需要不带 的字段名称_id,然后附加_id到它。现在,您正在创建两列:user_id_idlocation_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 回答