Module: ActiveRecordExtension::ClassMethods
- Defined in:
- lib/active_record_extension.rb
Overview
add your static(class) methods here
Instance Method Summary collapse
- #belongs_to_field(field) ⇒ Object
- #belongs_to_field?(field) ⇒ Boolean
- #belongs_to_field_by_name(name) ⇒ Object
- #belongs_to_fields ⇒ Object
-
#many_to_many_associated_tables ⇒ Object
OData does not allow creating an entry for a table that is used in a many to many joining table.
- #many_to_many_associated_tables=(value) ⇒ Object
-
#many_to_many_binding_name ⇒ Object
Binding name is found in the metadata xml file.
- #many_to_many_binding_name=(value) ⇒ Object
-
#many_to_many_use_old_api ⇒ Object
For some associations the new api does not work, notably the systemuser.
- #many_to_many_use_old_api=(value) ⇒ Object
-
#odata_field(field, options) ⇒ Object
In some cases the odata field name is different than the database field name.
- #odata_field_value(crm_key) ⇒ Object
-
#odata_table_reference ⇒ Object
If odata refers to table differently than table name when using associations, you can use this method.
- #odata_table_reference=(value) ⇒ Object
Instance Method Details
#belongs_to_field(field) ⇒ Object
71 72 73 74 75 76 |
# File 'lib/active_record_extension.rb', line 71 def belongs_to_field(field) @belongs_to_fields ||= belongs_to_fields matching_fields = @belongs_to_fields.select{|f| f.foreign_key == field} raise "Multiple matching foreign_keys. Only unique foreign keys allowed [#{field}]" if matching_fields.count > 1 matching_fields.first end |
#belongs_to_field?(field) ⇒ Boolean
66 67 68 69 |
# File 'lib/active_record_extension.rb', line 66 def belongs_to_field?(field) @belongs_to_fields ||= belongs_to_fields @belongs_to_fields.map(&:foreign_key).include?(field) end |
#belongs_to_field_by_name(name) ⇒ Object
78 79 80 81 |
# File 'lib/active_record_extension.rb', line 78 def belongs_to_field_by_name(name) @belongs_to_fields ||= belongs_to_fields @belongs_to_fields.select{|f| f.name.to_s == name}.first end |
#belongs_to_fields ⇒ Object
83 84 85 |
# File 'lib/active_record_extension.rb', line 83 def belongs_to_fields reflect_on_all_associations(:belongs_to) end |
#many_to_many_associated_tables ⇒ Object
OData does not allow creating an entry for a table that is used in a many to many joining table. You must associate tables together. If a table uses this field, it indicates its a joining many to many table. An array of the 2 associated tables, eg [Table1, Table2]
99 100 101 |
# File 'lib/active_record_extension.rb', line 99 def many_to_many_associated_tables @many_to_many_associated_tables end |
#many_to_many_associated_tables=(value) ⇒ Object
103 104 105 |
# File 'lib/active_record_extension.rb', line 103 def many_to_many_associated_tables=(value) @many_to_many_associated_tables = value end |
#many_to_many_binding_name ⇒ Object
Binding name is found in the metadata xml file. It will look something like (system users - opportunities): <EntitySet Name=“systemusers” EntityType=“Microsoft.Dynamics.CRM.systemuser”>
<NavigationPropertyBinding Path="new_systemuser_opportunity" Target="opportunities"/>
Its different for both entities, so this is a hash of tablename to binding name
111 112 113 |
# File 'lib/active_record_extension.rb', line 111 def many_to_many_binding_name @many_to_many_binding_name end |
#many_to_many_binding_name=(value) ⇒ Object
115 116 117 |
# File 'lib/active_record_extension.rb', line 115 def many_to_many_binding_name=(value) @many_to_many_binding_name = value end |
#many_to_many_use_old_api ⇒ Object
For some associations the new api does not work, notably the systemuser. But the old api does work. Hopefully in future releases Microsoft will fix the new apis.
121 122 123 |
# File 'lib/active_record_extension.rb', line 121 def many_to_many_use_old_api @many_to_many_use_old_api ||= false end |
#many_to_many_use_old_api=(value) ⇒ Object
125 126 127 |
# File 'lib/active_record_extension.rb', line 125 def many_to_many_use_old_api=(value) @many_to_many_use_old_api = value end |
#odata_field(field, options) ⇒ Object
In some cases the odata field name is different than the database field name. This method is used for this mapping
130 131 132 133 |
# File 'lib/active_record_extension.rb', line 130 def odata_field(field, ) @odata_property_key ||= {} @odata_property_key[field] = [:crm_key] end |
#odata_field_value(crm_key) ⇒ Object
135 136 137 138 |
# File 'lib/active_record_extension.rb', line 135 def odata_field_value(crm_key) @odata_property_key ||= {} @odata_property_key[crm_key] end |
#odata_table_reference ⇒ Object
If odata refers to table differently than table name when using associations, you can use this method
88 89 90 |
# File 'lib/active_record_extension.rb', line 88 def odata_table_reference @odata_table_reference end |
#odata_table_reference=(value) ⇒ Object
92 93 94 |
# File 'lib/active_record_extension.rb', line 92 def odata_table_reference=(value) @odata_table_reference = value end |