問題
skip_before_action :hoge, only: :method_a, if: -> { condition }
とするとif
オプションが無視される。skip_before_action
コールバックに限った話では無さそうだが、検証していないのでここでは一般化しない。claudiob氏のコメントを読むにRails 5で修正されているかもしれない。
一応その時点でのドキュメントには以下のように書いてあった
Note that :only has priority over :if in case they
are used together.only: :index, if: -> { true } # the :if option will be ignored.
Note that :if has priority over :except in case they
are used together.except: :index, if: -> { true } # the :except option will be ignored.
回避策
あまり気が進まない方法ではあるが、
skip_before_action :hoge, if: proc { condition && action_name == 'method_a' }
とするというissueを見ているとコメントが見られた。