Ruby on rails 模型关联有多个删除对象,并且多个删除对象都属于多个删除对象?
我有一个有很多短途旅行的模型项目Ruby on rails 模型关联有多个删除对象,并且多个删除对象都属于多个删除对象?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有一个有很多短途旅行的模型项目 class Project < ActiveRecord::Base has_many :excursions def remove_user_from_excursion(excursion_id, current_user) excursions.find(excursion_id).users.delete(current_user) save! end end class项目
class Project < ActiveRecord::Base
has_many :excursions
def remove_user_from_excursion(excursion_id, current_user)
excursions.find(excursion_id).users.delete(current_user)
save!
end
end
class项目
然后我有一个远足模型,它有很多用户
class Excursion < ActiveRecord::Base
belongs_to :project
has_and_belongs_to_many :users
end
课堂游览
我想提供从游览中删除用户的功能,我尝试在项目模型上调用从游览中删除用户方法,但似乎不起作用。用户保留作为游览的一部分。我做错了什么?首先,不能在数组上使用“查找”。在你的情况下,你应该有一系列的远足,你想通过id找到它,但这种方式是行不通的。“find”方法在模型类上工作,如“shipption.find(shipption\u id)” 第二,你必须有一个“项目”的实例来获得与项目相关的远足,所以你应该使用“自我”->“自我。远足……” 最终,要想做你想做的事,你可以写下如下内容:
def remove_user_from_excursion(excursion_id, current_user)
Excursion.find(excursion_id).users.delete(current_user)
end
或
当然,第一个选项要好得多:)
偏移\u实例。users.find().destroy应该完成这项工作。在这种关系中,destroy意味着销毁联接表中关联两个实体的记录,在本例中为表偏移users。请尝试一下。以下操作应该有效
def remove_user_from_excursion(excursion_id, current_user)
excursions.find(excursion_id).users.destroy(current_user)
end
您是否正在尝试删除用户或用户与远足之间的关系保存!此处不需要。向我们显示提供的db查询。@AnilMaurya我正在尝试删除用户与远足之间的关系。您确定您的代码正在删除关系而不是用户本身吗?是的,当关系为到一时,即。您的短途旅行有许多用户通过短途旅行用户。请在控制台上尝试一下,看看会发生什么。.find().destroy
将查找并加载用户,并将破坏用户而不是关系。我正在rails应用程序中尝试它,它可以正常工作。无论如何,请尝试使用项目.短途旅行.find(短途旅行id).users.delete(用户id)
def remove_user_from_excursion(excursion_id, current_user)
excursions.find(excursion_id).users.destroy(current_user)
end