Pet*_*ter 5 activerecord ruby-on-rails
让我们说一个User有很多Documents,还有一个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
Run Code Online (Sandbox Code Playgroud)
问题是,当我说current_user.document = some_document,它删除以前存储在文档current_user.document的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
Run Code Online (Sandbox Code Playgroud)
PS但要注意循环保存.如果您创建一个新用户(并且尚未保存)并设置current_document然后保存用户,则可能会出现堆栈溢出或其他疯狂错误.
| 归档时间: |
|
| 查看次数: |
1695 次 |
| 最近记录: |