项目有很多房间。当我从视图中删除一个项目时,关联的房间不会被删除。房间也有许多产品,当一个项目被删除时,这些产品也应该被删除。
项目类
class Project < ActiveRecord::Base
belongs_to :user
has_many :rooms, dependent: :destroy
has_many :products, through: :rooms
end项目财务主任
class ProjectsController < ApplicationController
def destroy
@project = current_user.projects.find(params[:id])
if @project.delete
redirect_to user_projects_path(@project.user)
end
end
end客房控制器
class RoomsController < ApplicationController
def destroy
@room = Room.find(params[:id])
if @room.delete
redirect_to root_path
end
end“项目”中的“删除”链接显示视图。
= link_to "Delete", project_room_path(room.project, room), method: :delete, data: { confirm: "Are you sure?" }, title: room.title, class: "btn btn-danger"发布于 2014-06-09 03:20:37
尝试更改破坏操作,以调用实例变量的破坏方法,而不是删除。
class ProjectsController < ApplicationController
def destroy
@project = current_user.projects.find(params[:id])
if @project.delete
redirect_to user_projects_path(@project.user)
end
end
end根据活动记录协会上的文档,"has_many :通过关联有连接表中的记录,以及关联的记录。所以……假定在关联中删除是为了删除所有者和关联对象之间的链接,而不一定是关联对象本身。因此,对于. has_many : than,连接记录将被删除,但是关联的记录不会被删除。“
https://stackoverflow.com/questions/24113198
复制相似问题