代码之家  ›  专栏  ›  技术社区  ›  Peter

Rails:有很多,但也有一个不同的名字

  •  5
  • Peter  · 技术社区  · 15 年前

    让我们举个例子 User 有很多 Document 他们目前正在研究。我如何在rails中表示这一点?

    current_user.current_document = Document.first (文档前面有或没有当前_uuu)且不更改 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 当前用户文档 . 这是有道理的,因为 has_one 关系 文件 有,但不是我想要的。我怎么修理它?

    1 回复  |  直到 15 年前
        1
  •  8
  •   Marcel Jackwerth    15 年前

    您需要将您的模型更改为

    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 然后保存用户,可能会出现堆栈溢出或其他疯狂错误。