User has_and_belongs_to_many Marketplaces
加入表格为marketplaces_users
。
可是:
user.marketplaces.first.destroy
销毁联接记录和源市场记录。我只想破坏连接记录。由于某种原因,我无法找到如何做到这一点。
答案 0 :(得分:1)
您可以首先获取marketplace
然后在销毁HABTM关系/记录后保存它来解决此问题。 HABTM通常用于非常简单的用例,您很快就会遇到问题,此时您需要切换到has_many :through
。
答案 1 :(得分:0)
在相关记录上的集合上使用delete
而不是destroy
。根据我理解的文件,这删除了“链接”而不破坏记录。 delete
将关联作为参数。
user.marketplaces.delete(user.marketplaces.first)
我已经测试了这个,但仅限于Rails 4。
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
请参阅“删除或销毁?”和“什么被删除。”
答案 2 :(得分:0)
你能做到的唯一方法就是
ActiveRecord::Base.connection.execute("delete from marketplaces_users where(market_place_id = #{user.marketplaces.first.id})")
但不确定这是否适用于内部控制器。我已经把它作为种子任务。
答案 3 :(得分:0)
http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_and_belongs_to_many
collection.delete(object, …)
Removes one or more objects from the collection by removing their associations from the join table. This does not destroy the objects.
collection.destroy(object, …)
Removes one or more objects from the collection by running destroy on each association in the join table, overriding any dependent option. This does not destroy the objects.