Module: Dooly::ModelRegulator
- Defined in:
- lib/dooly/model_regulator.rb
Instance Method Summary collapse
Instance Method Details
#by(*args) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/dooly/model_regulator.rb', line 8 def by(*args) = args. if args.length > 1 return args.map {|arg| by(arg, )} end value = args[0] begin return value if value.is_a? self return self.send(model_regulator_finder, value) if value.is_a? Integer return self.send(model_regulator_finder, Integer(value)) if value.is_a? String return value.record if Dooly::IdProxy::Base === value if [:relate] fn = [:relate] == true ? "#{self.name.underscore}_id".to_sym : [:relate].to_sym return self.send(model_regulator_finder, value.send(fn)) if value.respond_to?(fn) end rescue => e raise "Cannot find record from #{self.name} with #{value.to_s}: #{e}" else raise "Cannot find record from #{self.name} with #{value.to_s}" end end |
#id(*args) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/dooly/model_regulator.rb', line 33 def id(*args) = args. if args.length > 1 return args.map {|arg| id(arg, )} end value = args[0] begin return value.id if value.is_a? self return value if value.is_a? Integer return Integer(value) if value.is_a? String return value.id if Dooly::IdProxy::Base === value if [:relate] fn = [:relate] == true ? "#{self.name.underscore}_id".to_sym : [:relate].to_sym return value.send(fn) if value.respond_to?(fn) end rescue => e raise "Cannot find id from #{self.name} with #{value.to_s}: #{e}" else raise "Cannot find id from #{self.name} with #{value.to_s}" end end |
#model_regulator_finder(finder = nil) ⇒ Object
3 4 5 6 |
# File 'lib/dooly/model_regulator.rb', line 3 def model_regulator_finder(finder = nil) return (@model_regulator_finder || :find) if finder.nil? @model_regulator_finder = finder.to_sym end |