class RightOn::Rule

Public Class Methods

new(right) click to toggle source
# File lib/right_on/rule.rb, line 7
def initialize(right)
  @right = right
end
rule_for(right) click to toggle source
# File lib/right_on/rule.rb, line 3
def self.rule_for(right)
  self.new(right).call
end

Public Instance Methods

call() click to toggle source
# File lib/right_on/rule.rb, line 11
def call
  validate!

  CanCan::Rule.new(can?, action, subject, conditions, nil)
end

Private Instance Methods

action() click to toggle source
# File lib/right_on/rule.rb, line 27
def action
  @right.action.to_sym
end
can?() click to toggle source
# File lib/right_on/rule.rb, line 23
def can?
  @right.can
end
conditions() click to toggle source
# File lib/right_on/rule.rb, line 35
def conditions
  model_class ? @right.conditions : nil
end
model_class() click to toggle source
# File lib/right_on/rule.rb, line 39
def model_class
  return nil unless @right.subject.present?

  begin
    model_class = self.class.const_get(@right.subject)
  rescue NameError
    model_class = Class
  end

  return model_class if model_class.ancestors.include?(ActiveRecord::Base)
end
subject() click to toggle source
# File lib/right_on/rule.rb, line 31
def subject
  model_class || @right.subject
end
validate!() click to toggle source
# File lib/right_on/rule.rb, line 19
def validate!
  fail RightOn::Error, 'must specify an action' unless @right.action.present?
end