如何Rails:如果项目有任务,则不应删除它:我该如何解决这个问题?

Run*_*uny 5 ruby-on-rails orphaned-objects

嗨,我有一个项目,每个项目都有任务.任务属于项目.在删除项目之前,我想检查是否有相关任务.如果有任务我不想删除项目.如果没有关联任务,则应删除该项目.你能帮我解释一下代码吗?我错过了什么?

class Project < ActiveRecord::Base  
  before_destroy :check_tasks    

  def check_tasks 
    if Project.find(params[:id]).tasks  
      flash[:notice] = 'This project has tasks.'
      redirect_to :action => 'list_projects'    
    end 
  end
end
Run Code Online (Sandbox Code Playgroud)

nsl*_*cum 6

从before_destroy方法返回false以防止实例被销毁.

该方法还应返回有意义的错误以进行故障排除.

class Project < ActiveRecord::Base
  before_destroy :check_tasks

  def check_tasks
    if self.tasks.any?
      errors.add_to_base "Project has tasks and cannot be destroyed."
      return false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

注意:flash [:notice]和params [:attr_name]只能在控制器中使用.