【问题标题】:Public_activity - Destroy User's activities after Account cancelationPublic_activity - 账户注销后销毁用户的活动
【发布时间】:2014-01-17 14:25:26
【问题描述】:

我试图实现,当用户删除他的帐户时,他的所有活动也会被删除。

我在 Rails 4 - 设计 - 公共活动

我的注册控制器:

class RegistrationsController < Devise::RegistrationsController

  # DELETE /resource
  def destroy
    resource.destroy
    Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)
    set_flash_message :notice, :destroyed if is_flashing_format?
    yield resource if block_given?
    respond_with_navigational(resource){ redirect_to after_sign_out_path_for(resource_name) }
  end

end

在用户删除我使用的评论后销毁 cmets 记录:

@activity = PublicActivity::Activity.find_by_trackable_id(params[:id])
@activity.destroy

我正在寻找类似的东西,只是为了在帐户取消后销毁所有活动。

谁有好的解决方案?

【问题讨论】:

    标签: ruby-on-rails devise controller ruby-on-rails-4


    【解决方案1】:

    在User.rb中添加回调:

     before_destroy :delete_activities
    
     def delete_activities
        acts = PublicActivity::Activity.where(owner_id: self.id, owner_type: "User")
        acts.delete_all
      end
    

    【讨论】:

    • 是的..这也是我想继续前进的方式。不知道还有什么更好的方法,:)
    • 它是否也删除了关联对象?例如用户有很多文章,文章有很多 cmets 那么我们需要为每个实体编写回调吗? (假设所有模型都包含 PublicActivity)
    • @Mansi 如果你的模型中有has_many :comments, dependent: :destroy 这样的关系,那么在用户删除时,他的 cmets 也会被删除,无需编写回调。
    • 它是否也会删除活动,即 PublicActivity 的记录?
    • @Mansi 不,您必须像我的回答一样这样做,目前不知道任何其他解决方案。我看不出有任何不利之处。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 2011-08-04
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多