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
124 125 126 127 128 129 |
# File 'lib/active_record_extension.rb', line 124 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
119 120 121 122 |
# File 'lib/active_record_extension.rb', line 119 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
131 132 133 134 |
# File 'lib/active_record_extension.rb', line 131 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
136 137 138 |
# File 'lib/active_record_extension.rb', line 136 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]
152 153 154 |
# File 'lib/active_record_extension.rb', line 152 def many_to_many_associated_tables @many_to_many_associated_tables end |
#many_to_many_associated_tables=(value) ⇒ Object
156 157 158 |
# File 'lib/active_record_extension.rb', line 156 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”>
< Path="new_systemuser_opportunity" Target="opportunities"/>
Its different for both entities, so this is a hash of tablename to binding name
164 165 166 |
# File 'lib/active_record_extension.rb', line 164 def many_to_many_binding_name @many_to_many_binding_name end |
#many_to_many_binding_name=(value) ⇒ Object
168 169 170 |
# File 'lib/active_record_extension.rb', line 168 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.
174 175 176 |
# File 'lib/active_record_extension.rb', line 174 def many_to_many_use_old_api @many_to_many_use_old_api ||= false end |
#many_to_many_use_old_api=(value) ⇒ Object
178 179 180 |
# File 'lib/active_record_extension.rb', line 178 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
183 184 185 186 |
# File 'lib/active_record_extension.rb', line 183 def odata_field(field, ) @odata_property_key ||= {} @odata_property_key[field] = [:crm_key] end |
#odata_field_value(crm_key) ⇒ Object
188 189 190 191 |
# File 'lib/active_record_extension.rb', line 188 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
141 142 143 |
# File 'lib/active_record_extension.rb', line 141 def odata_table_reference @odata_table_reference end |
#odata_table_reference=(value) ⇒ Object
145 146 147 |
# File 'lib/active_record_extension.rb', line 145 def odata_table_reference=(value) @odata_table_reference = value end |