如何在Rails中的before_delete回调中访问params



如何为以下控制器编写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

最新更新