Any way to determine which object called a method?

后端 未结 5 1834
悲哀的现实
悲哀的现实 2020-12-30 01:05

I\'m hoping that Ruby\'s message-passing infrastructure means there might be some clever trick for this.

How do I determine the calling object -- which object called

5条回答
  •  忘掉有多难
    2020-12-30 01:10

    Peter's answer used in production code example

    In my company we were deprecating deleted flag in flavor of Paranoia gem deleted_at column. The code bellow is how we were ensuring all will go well before we remove column (deploying this code and then after 2 or 3 days of being live we deploy migration remoove_column :lessons, :deleted

    class Lesson < ActiveRecord::Base
    
      def deleted
        if caller.select { |c| c.match /serialization\.rb/ }.any?
          # this is Rails object mapping
          !!deleted_at
        else
          raise 'deplicated - deleted was replaced by  deleted_at'
        end
      end
    end
    

提交回复
热议问题