Rails活动销毁记录不起作用

时间:2014-08-01 21:29:29

标签: ruby-on-rails heroku controller destroy

我遇到了最棘手的问题而且我不知道如何修复它。我的模型有一个与它们相关联的多态活动模型,可以在用户创建状态,媒体等时创建活动。一切都在我的本地构建中工作正常,甚至在我的fork heroku应用程序上也能正常工作。但是当我删除主应用程序上的项目时,它不会删除相应的活动。它只发生在主应用程序上,我的本地构建和分叉应用程序按预期删除活动。他们都使用相同的代码。我不知道它为什么不起作用。

statuses_controller.rb

class StatusesController < ApplicationController

    before_filter :find_status, only: [:edit, :update, :destroy]

    def create
        @status = current_member.statuses.new(params[:status])

        respond_to do |format|
            if @status.save
              @activity = current_member.create_activity(@status, 'created')
              format.html { redirect_to :back }
              format.json
              format.js
            else
              format.html { redirect_to profile_path(current_member), alert: 'Post wasn\'t created. Please try again and ensure image attchments are under 10Mbs.'  }
              format.json { render json: @status.errors, status: :unprocessable_entity }
              format.js
            end
        end
    end

    def destroy
        @activity = Activity.find_by_targetable_id(params[:id])
        if @activity
            @activity.destroy
        end
        @status.destroy

        respond_to do |format|
            format.html { redirect_to profile_path(current_member) }
            format.json { head :no_content }
        end
    end

    def find_status
        @status = current_member.statuses.find(params[:id])
    end 

end

member.rb

class Member < ActiveRecord::Base

    def create_activity(item, action)
        activity = activities.new
        activity.targetable = item
        activity.action = action 
        activity.save 
        activity
    end

end

移植

class CreateActivities < ActiveRecord::Migration
    def change
        create_table :activities do |t|
            t.integer :member_id
            t.string :action

            t.integer :targetable_id
            t.string :targetable_type

            t.timestamps
        end

        add_index :activities, :member_id
        add_index :activities, [:targetable_id, :targetable_type]

    end
end

1 个答案:

答案 0 :(得分:0)

我想出来了。我删除了before_filter :find_status上的destroy,并将其添加为:@status = Status.find(params[:id])。不知道为什么以前的方式不起作用,但这适用于所有版本。