让我们说一个User
有很多Document
s,以及单个Document
他们目前正在努力。我如何在 Rails 中表示这一点?
我想说current_user.current_document = Document.first
(在文档前面有或没有 current_ )并且不改变current_user.documents
收藏。
这就是我所拥有的:
class Document < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :documents
has_one :document
end
问题是当我说current_user.document = some_document
,它会删除先前存储在的文档current_user.document
from current_user.documents
。这是有道理的,因为has_one
的关系Document
有,但不是我想要的。我如何解决它?
您需要将您的模型更改为
class Document < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :documents
# you could also use :document, but I would recommend this:
belongs_to :current_document, :class_name => "Document"
end
附:但要注意循环保存。如果您创建一个新用户(并且尚未保存)并设置current_document
然后保存用户,您可能会遇到堆栈溢出或其他疯狂错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)