当前位置:  开发笔记 > 编程语言 > 正文

从数组id更新has_many关联

如何解决《从数组id更新has_many关联》经验,为你挑选了1个好方法。

我有2个模型通过关联与has_many连接. Book可以有很多作者和Author很多书.

AuthorsControllerupdate从API的行动,我得到作者的ID和书籍ID数组Parameters: {"books"=>"3,4,5", "id"=>"1"},我需要与他们更新作者的书籍.实现这一目标的最佳方法是什么?

我试过author.books << Book.where(id: params[:books])但问题在于,如果一本书已经出现在作者的书中,它将会被复制.



1> 小智..:

最有效的方法是使用:has_many Association Reference.vide:Rails 4指南

4.3.1 Methods Added by has_many

声明has_many关联时,声明类会自动获得与该关联相关的16个方法:

collection(force_reload = false)
collection<<(object, ...)
collection.delete(object, ...)
collection.destroy(object, ...)
collection=(objects)
collection_singular_ids
**collection_singular_ids=(ids)**
collection.clear
collection.empty?
collection.size
collection.find(...)
collection.where(...)
collection.exists?(...)
collection.build(attributes = {}, ...)
collection.create(attributes = {})
collection.create!(attributes = {})

例:

在此输入图像描述


**小心!**用`order_ids = {ids)`删除ID会删除JOIN记录,并且**不**调用任何回调。为此,您需要在“ has_many”关联上使用“ before_remove”。
推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有