ruby on rails - method - La actividad de Rails destroy record no funciona
method delete rails (1)
Me di cuenta de esto. before_filter :find_status
el before_filter :find_status
en destroy
y agregué esto en su lugar: @status = Status.find(params[:id])
. No sé por qué la forma anterior no funcionó, pero esto funciona en todas las compilaciones.
Tengo el problema más extraño y no sé cómo solucionarlo. Mis modelos tienen un modelo de actividad polimórfica asociado a ellos que crea actividades cuando un usuario crea un estado, medios, etc. Todo funciona bien en mi compilación local e incluso en mi aplicación heroku ahorquillada. Pero cuando elimino un elemento en mi aplicación principal, no elimina la actividad correspondiente. Solo ocurre en la aplicación principal, tanto mi compilación local como la aplicación bifurcada eliminan la actividad como se esperaba. Todos usan el mismo código. No sé por qué no está funcionando.
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
Migración
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