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中的文档。 这是有道理的,因为Documenthas_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然后保存用户,则可能会出现堆栈溢出或其他疯狂错误。