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)
从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]只能在控制器中使用.
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |