我有表用户,位置和关注,其中用户有多个位置:through => :如下。跟随belongs_to用户和位置。我想在Follows表中添加一行 - 也就是说,在用户和位置之间创建一个Follow关系。
我不知道该怎么做,或者我正在实施Follows right:
class CreateFollows < ActiveRecord::Migration
def change
create_table :follows |do| t
t.references :user_id
t.references :location_id
t.timestamps
end
end
end
我试图用来添加Follows关系的代码,给定userid和locationid,是
newFollow = Follow.new(:user_id => userid, :location_id => locationid)
newFollow.save
我收到错误未知属性:user_id。
任何想法?我真的被卡住了。非常感谢!
答案 0 :(得分:4)
在迁移过程中,references
需要没有_id
的字段名称,然后会向其添加_id
。现在,您要创建两列: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
这将自动创建加入记录。