如何为以下控制器编写before_decurt回调:
class RelationshipsController < ApplicationController
....
def destroy
@user = Relationship.find(params[:id]).followed
current_user.unfollow(@user)
respond_to do |format|
format.html { redirect_to @user }
format.js
end
end
end
class Relationship < ActiveRecord::Base
belongs_to :follower, class_name: "User"
belongs_to :followed, class_name: "User"
validates :follower_id, presence: true
validates :followed_id, presence: true
before_destroy :delete_car_permissions
private
def delete_car_permissions
car_ids = followed.car_ids
Permission.where("thing_id IN (?) AND user_id = ?", car_ids, follower).delete_all
end
end
delete_car_permissions不起作用,因为我无法访问模型中的参数!
您不需要params[:id]
来标识Relationship
,因为before_destroy
回调运行在实例上,而不是类上。
拥有就足够了
def delete_car_permissions
car_ids = followed.car_ids
Permission.where("thing_id IN (?) AND user_id = ?", car_ids, follower).delete_all
end