Module: RingStrongParameters::Model::ClassMethods
- Defined in:
- lib/kojac/ring_strong_parameters.rb
Instance Method Summary collapse
- #permitted(aAbility, aRing) ⇒ Object
- #permitted_associations(aAbility, aRing) ⇒ Object
- #permitted_fields(aAbility, aRing) ⇒ Object
-
#ring(aRing, aAbilities) ⇒ Object
supports different formats : ring :sales, :write => [:name,:address] ie.
- #ring_can?(aAbility, aRing) ⇒ Boolean
Instance Method Details
#permitted(aAbility, aRing) ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/kojac/ring_strong_parameters.rb', line 109 def permitted(aAbility,aRing) aRing = RingStrongParameters.lookup_ring(aRing) return [] unless aRing and rings_fields = self.respond_to?(:rings_fields).to_nil && self.rings_fields fields = [] aRing.upto(rings_fields.length-1) do |i| next unless ring_rec = rings_fields[i] if af = ring_rec[aAbility.to_sym] fields += af if af.is_a?(Array) end end fields.uniq! fields.sort! fields end |
#permitted_associations(aAbility, aRing) ⇒ Object
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/kojac/ring_strong_parameters.rb', line 131 def permitted_associations(aAbility, aRing) aRing = RingStrongParameters.lookup_ring(aRing) return [] unless aRing and rings_fields = self.respond_to?(:rings_fields).to_nil && self.rings_fields associations = self.reflections.keys fields = [] aRing.upto(rings_fields.length-1) do |i| next unless ring_rec = rings_fields[i] if af = ring_rec[aAbility.to_sym] fields += associations & af end end fields.uniq! fields.sort! fields end |
#permitted_fields(aAbility, aRing) ⇒ Object
125 126 127 128 129 |
# File 'lib/kojac/ring_strong_parameters.rb', line 125 def permitted_fields(aAbility, aRing) result = self.permitted(aAbility, aRing) result.delete_if { |f| self.reflections.has_key? f } result end |
#ring(aRing, aAbilities) ⇒ Object
supports different formats : ring :sales, :write => [:name,:address] ie. sales can write the name and address fields ring :sales, :read ie. sales can read this model ring :sales, [:read, :create, :destroy] ie. sales can read, create and destroy this model
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/kojac/ring_strong_parameters.rb', line 78 def ring(aRing,aAbilities) aRing = RingStrongParameters.lookup_ring(aRing) raise "aRing must be a number or a symbol defined in RingStrongParameters.config.ring_names" if !aRing.is_a?(Fixnum) if aAbilities.is_a? Hash # eg. fields like :write => [:name,:address] ring_rec = self.rings_fields[aRing] || {} aAbilities.each do |abilities,fields| abilities = [abilities] unless abilities.is_a?(Array) fields = [fields] unless fields.is_a?(Array) abilities.each do |a| a = a.to_sym ring_fields = ring_rec[a] || [] ring_fields = ring_fields + fields.map(&:to_sym) ring_fields.uniq! ring_fields.sort! ring_rec[a] = ring_fields end end self.rings_fields[aRing] = ring_rec elsif aAbilities.is_a?(Array) || aAbilities.is_a?(Symbol) # eg. abilities like :sales, [:read, :create, :destroy] aAbilities = [aAbilities] unless aAbilities.is_a?(Array) ring_ab = self.rings_abilities[aRing] || [] aAbilities.each do |ability| ring_ab << ability.to_sym end ring_ab.uniq! ring_ab.sort! self.rings_abilities[aRing] = ring_ab end end |
#ring_can?(aAbility, aRing) ⇒ Boolean
149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/kojac/ring_strong_parameters.rb', line 149 def ring_can?(aAbility, aRing) aRing = RingStrongParameters.lookup_ring(aRing) return [] unless aRing and rings_abilities = self.respond_to?(:rings_abilities).to_nil && self.rings_abilities fields = [] aRing.upto(rings_abilities.length-1) do |i| next unless ring_ab = rings_abilities[i] return true if ring_ab.include?(aAbility) end return false end |