Rails:has_many,但也有一个不同的名称
假设User
有许多Document
,并且他们正在处理一个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.documents
删除以前存储在current_user.document
中的文档。 这是有道理的,因为Document
有has_one
关系,但不是我想要的。 我如何解决它?
您需要将模型更改为
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
PS但要注意循环保存。 如果您创建一个新用户(并且尚未保存)并设置current_document
然后保存用户,则可能会出现堆栈溢出或其他疯狂错误。