Module: Traits::Utilities
- Included in:
- Traits
- Defined in:
- lib/traits/utilities.rb
Instance Method Summary collapse
- #active_record_collection?(obj) ⇒ Boolean
- #active_record_descendant?(obj) ⇒ Boolean
- #active_record_instance?(obj) ⇒ Boolean
- #retrieve_active_record(obj) ⇒ Object
- #retrieve_active_record!(obj) ⇒ Object
Instance Method Details
#active_record_collection?(obj) ⇒ Boolean
42 43 44 |
# File 'lib/traits/utilities.rb', line 42 def active_record_collection?(obj) obj.kind_of?(ActiveRecord::Relation) end |
#active_record_descendant?(obj) ⇒ Boolean
38 39 40 |
# File 'lib/traits/utilities.rb', line 38 def active_record_descendant?(obj) obj.kind_of?(Class) && obj < ActiveRecord::Base end |
#active_record_instance?(obj) ⇒ Boolean
46 47 48 |
# File 'lib/traits/utilities.rb', line 46 def active_record_instance?(obj) obj.kind_of?(ActiveRecord::Base) end |
#retrieve_active_record(obj) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/traits/utilities.rb', line 6 def retrieve_active_record(obj) if active_record_descendant?(obj) obj elsif active_record_instance?(obj) obj.class elsif active_record_collection?(obj) obj.model else case obj when String, Symbol str = (obj.kind_of?(Symbol) ? obj.to_s : obj).underscore.singularize kls = str.camelize.safe_constantize || str.tr('_', '/').camelize.safe_constantize kls if active_record_descendant?(kls) when Traits::Model, Traits::Attribute obj.active_record when Traits::Association obj.from_active_record end end end |
#retrieve_active_record!(obj) ⇒ Object
32 33 34 35 36 |
# File 'lib/traits/utilities.rb', line 32 def retrieve_active_record!(obj) retrieve_active_record(obj) || begin raise ActiveRecordRetrieveError, "#{obj.inspect} is not a valid ActiveRecord reference" end end |