加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails:has_many,但也有一个不同的名字

发布时间:2020-12-17 03:33:50 所属栏目:百科 来源:网络整理
导读:假设用户有许多文档,他们正在处理一个文档.我如何在rails中表示这一点? 我想说current_user.current_document = Document.first(在文档前面有或没有current_)并且不要更改current_user.documents集合. 这就是我所拥有的: class Document ActiveRecord::Bas
假设用户有许多文档,他们正在处理一个文档.我如何在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

附:但要注意循环保存.如果您创建一个新用户(并且尚未保存)并设置current_document然后保存用户,则可能会出现堆栈溢出或其他疯狂错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读