我有以下类,这就是我想要建模的:用户有很多链接,链接可能属于许多用户,他们可能为他们的链接分配不同的标题。
class User < ActiveRecord::Base
has_many :user_links
has_many :links, through: :user_links
end
class UserLink < ActiveRecord::Base
belongs_to :user, :autosave => false
belongs_to :link
# contains attribute :title
end
class Link < ActiveRecord::Base
has_many :user_links
has_many :users, through: :user_links
end
所以,为了举例说明,我可能会有以下内容:
(id: 1)
,(id: 2)
(id: 1, url: "www.awebsite.com")
(user_id: 1, link_id: 1, title: "Very cool website")
,(user_id: 2, link_id: 1, title: "A website")
当链接已经存在时,应该从数据库中检索它,并且必须创建一个新的user_link
关联,但是当我调用时
@user.user_links.create(
:title => ...my_title...,
:link_id => @link.id)
它说用户已被带走,所以我认为它正在尝试再次保存用户。为什么会发生这种情况,因为我设置了:autosave => false
?
如果我这样做的方式不对,那么正确的做法是什么?