Class | Permission
In: | app/models/permission.rb
Parent: | ActiveRecord::Base

権限の参照のモデル。

### Methods

invisible invisible_conditions modifiable modifiable_conditions permissible permissible_conditions positive specified

### Public Class methods

invisible(type)

不可視権限の対象になっており型 type を持つレコードを配列で返す。

[Source]

        # File app/models/permission.rb, line 66
    66:   def self.invisible(type)
    67:     result, alt = specified(type).partition {|perm| perm.value == "invisible"}
    68:     result.inject [] do |seed, perm|
    69:       temp = alt.select {|x| x.grant_targettable_id == perm.grant_targettable_id}
    70:       if (temp.empty? || perm.priority < temp.map {|x| x.priority}.min)
    71:         seed << perm
    72:       else
    73:         seed
    74:       end
    75:     end
    76:   end

invisible_conditions(type)

不可視権限の対象で型 type を持つ条件節を返す。

[Source]

        # File app/models/permission.rb, line 89
    89:   def self.invisible_conditions(type)
    90:     (User.current.nil? || User.admin?) ? "0 = 1" : {:id => invisible(type).map(&:grant_targettable_id)}
    91:   end

modifiable(type)

全権限の対象になっており型 type を持つレコードを配列で返す。

[Source]

        # File app/models/permission.rb, line 56
    56:   def self.modifiable(type)
    57:     positive(type, "full")
    58:   end

modifiable_conditions(type)

全権限の対象で型 type を持つ条件節を返す。

[Source]

        # File app/models/permission.rb, line 79
    79:   def self.modifiable_conditions(type)
    80:     (User.current.nil? || User.admin?) ? "1 = 1" : {:id => modifiable(type).map(&:grant_targettable_id)}
    81:   end

permissible(type)

読み取りもしくは全権限の対象になっており型 type を持つレコードを配列で返す。

[Source]

        # File app/models/permission.rb, line 61
    61:   def self.permissible(type)
    62:     positive(type, "full", "visible")
    63:   end

permissible_conditions(type)

読み取りもしくは全権限の対象で型 type を持つ条件節を返す。

[Source]

        # File app/models/permission.rb, line 84
    84:   def self.permissible_conditions(type)
    85:     (User.current.nil? || User.admin?) ? "1 = 1" : {:id => permissible(type).map(&:grant_targettable_id)}
    86:   end

positive(type, *values)

[Source]

        # File app/models/permission.rb, line 43
    43:   def self.positive(type, *values)
    44:     result, alt = specified(type).partition {|perm| values.include?(perm.value)}
    45:     result.inject [] do|seed, perm|
    46:       temp = alt.select {|x| x.grant_targettable_id == perm.grant_targettable_id}
    47:       if (temp.empty? || perm.priority <= temp.map {|x| x.priority}.min)
    48:         seed << perm
    49:       else
    50:         seed
    51:       end
    52:     end
    53:   end

specified(type)

権限の対象になっており型 type を持つレコードを配列で返す。

[Source]

        # File app/models/permission.rb, line 38
    38:   def self.specified(type)
    39:     condition = "grant_targettable_type = '#{type.to_s.classify}'"
    40:     find(:all, :conditions => (User.current ? ["user_id = :user_id AND #{condition}", {:user_id => User.current.id}] : condition))
    41:   end

[Validate]