Ruby on rails 3 设计:如何定制注册控制器销毁方法

Ruby on rails 3 设计:如何定制注册控制器销毁方法,ruby-on-rails-3,devise,crud,destroy,rails-models,Ruby On Rails 3,Devise,Crud,Destroy,Rails Models,我的用户和配置文件在不同的模型中。删除用户后,链接的配置文件将保留,这是所需的结果。我想做的是将配置文件记录标记为已删除 我已经在我的配置文件表中添加了一个已删除的列(布尔值),但是我不知道如何将set添加到design destroy方法的true set app\controller\registrations\u controller.rb class RegistrationsController < Devise::RegistrationsController def d

我的用户和配置文件在不同的模型中。删除用户后,链接的配置文件将保留,这是所需的结果。我想做的是将配置文件记录标记为已删除

我已经在我的配置文件表中添加了一个已删除的列(布尔值),但是我不知道如何将set添加到design destroy方法的true set

app\controller\registrations\u controller.rb

class RegistrationsController < Devise::RegistrationsController
   def destroy
     delete_profile(params) 
   end


   private

   def delete_profile(params)
     profile = Profile.find(params[:id])
     profile.deleted = true
   end  
end

如何在我的视图中从删除用户传递正确的参数?

Deviate不使用
参数[:id]
来销毁当前用户(因此它不是通过路由提供的),而是使用
当前用户

以下是控制器的相关部分:

class Devise::RegistrationsController < DeviseController
  prepend_before_filter :authenticate_scope!, :only => [:edit, :update, :destroy]

  def destroy
    resource.destroy
    Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)
    set_flash_message :notice, :destroyed if is_navigational_format?
    respond_with_navigational(resource){ redirect_to after_sign_out_path_for(resource_name)       }
  end

  protected 

  def authenticate_scope!
    send(:"authenticate_#{resource_name}!", :force => true)
    self.resource = send(:"current_#{resource_name}")
  end
end
class designe::RegistrationsController[:编辑,:更新,:销毁]
def销毁
资源破坏
设计、签出所有示波器?注销:注销(资源名称)
设置\u flash\u消息:注意,:如果是导航格式,则销毁?
用导航(资源){注销后重定向到(资源名称)}
结束
受保护的
def\u范围!
send(:“authenticate”{resource\u name}!”,:force=>true)
self.resource=send(:“当前资源名”)
结束
结束
所以你的选择是做类似的事情

class RegistrationsController < Devise::RegistrationsController
  def destroy
    current_user.deleted = true
    current_user.save
    #some more stuff
  end
end
类注册控制器
您在
destroy
方法名称中有一个输入错误谢谢我更新了我的代码谢谢,我最终使用了:current\u user.profile.update\u attribute(:deleted,true)super这会实现同样的效果吗?请确定,您用于身份验证的设计模型是什么?是用户,还是个人资料?在我的示例中,我使用了
current_user
方法,但这应该是
current_{designe_resource}
,带有designe_resource
user
profile
。一定要小心地将其传递给
super
,这会在完成自定义工作后触发默认操作,这通常会真正删除资源。
class RegistrationsController < Devise::RegistrationsController
  def destroy
    current_user.deleted = true
    current_user.save
    #some more stuff
  end
end