Class: IronAdmin::Adapters::Mongoid::AssociationWrapper
- Inherits:
-
Object
- Object
- IronAdmin::Adapters::Mongoid::AssociationWrapper
- Defined in:
- lib/iron_admin/adapters/mongoid/association_wrapper.rb
Overview
Wraps a Mongoid relation metadata object to present the interface expected by FieldInferrer and other IronAdmin consumers.
Normalizes Mongoid's embedded association macros to their IronAdmin equivalents: embeds_many → :has_many, embeds_one → :has_one, embedded_in → :belongs_to.
Constant Summary collapse
- MACRO_MAP =
{ embeds_many: :has_many, embeds_one: :has_one, embedded_in: :belongs_to, }.freeze
Instance Attribute Summary collapse
-
#macro ⇒ Symbol
readonly
The normalized macro (:belongs_to, :has_many, :has_one, :has_and_belongs_to_many).
-
#name ⇒ Symbol
readonly
The association name.
Instance Method Summary collapse
- #foreign_key ⇒ Object
- #foreign_type ⇒ Object
-
#initialize(relation) ⇒ AssociationWrapper
constructor
A new instance of AssociationWrapper.
- #klass ⇒ Object
- #polymorphic? ⇒ Boolean
Constructor Details
#initialize(relation) ⇒ AssociationWrapper
Returns a new instance of AssociationWrapper.
25 26 27 28 29 |
# File 'lib/iron_admin/adapters/mongoid/association_wrapper.rb', line 25 def initialize(relation) @relation = relation @name = relation.name.to_sym @macro = MACRO_MAP.fetch(raw_macro_for(relation), raw_macro_for(relation)) end |
Instance Attribute Details
#macro ⇒ Symbol (readonly)
Returns The normalized macro (:belongs_to, :has_many, :has_one, :has_and_belongs_to_many).
17 18 19 |
# File 'lib/iron_admin/adapters/mongoid/association_wrapper.rb', line 17 def macro @macro end |
#name ⇒ Symbol (readonly)
Returns The association name.
14 15 16 |
# File 'lib/iron_admin/adapters/mongoid/association_wrapper.rb', line 14 def name @name end |
Instance Method Details
#foreign_key ⇒ Object
56 57 58 59 60 |
# File 'lib/iron_admin/adapters/mongoid/association_wrapper.rb', line 56 def foreign_key return "" unless @relation.respond_to?(:foreign_key) @relation.foreign_key.to_s end |
#foreign_type ⇒ Object
68 69 70 |
# File 'lib/iron_admin/adapters/mongoid/association_wrapper.rb', line 68 def foreign_type "#{@name}_type" end |
#klass ⇒ Object
50 51 52 53 54 |
# File 'lib/iron_admin/adapters/mongoid/association_wrapper.rb', line 50 def klass @relation.class_name.constantize rescue NameError nil end |
#polymorphic? ⇒ Boolean
62 63 64 65 66 |
# File 'lib/iron_admin/adapters/mongoid/association_wrapper.rb', line 62 def polymorphic? return false unless @relation.respond_to?(:polymorphic?) @relation.polymorphic? end |