我遇到了最棘手的问题而且我不知道如何修复它。我的模型有一个与它们相关联的多态活动模型,可以在用户创建状态,媒体等时创建活动。一切都在我的本地构建中工作正常,甚至在我的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
答案 0 :(得分:0)
我想出来了。我删除了before_filter :find_status
上的destroy
,并将其添加为:@status = Status.find(params[:id])
。不知道为什么以前的方式不起作用,但这适用于所有版本。