restforce-db 1.2.8 → 1.2.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -2
- data/lib/restforce/db/associations/base.rb +19 -0
- data/lib/restforce/db/associations/belongs_to.rb +0 -15
- data/lib/restforce/db/associations/has_many.rb +1 -1
- data/lib/restforce/db/associations/has_one.rb +1 -1
- data/lib/restforce/db/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa1372a2f8baf6d0af77a254f0360d6ad37aef11
|
4
|
+
data.tar.gz: 323beb3762fbf77ef7aa79f0465924260d22432d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad8b9ed0abf1e713b416a1e352f2c65de949dde70d7ee08db7c3fb40240995a90f7ac4b912b8e34cefa625db2630fd942b40d0a9b61f15661138a69548ed1706
|
7
|
+
data.tar.gz: 5d065ba0b3078f5b5f67c6f7cb8f1de520eb5049bde8cd31b2f73c5ef6cf029ff16ae9a7337e128dc1fae18828b2d54cbe028613b74511f33a62522376f772ce
|
data/README.md
CHANGED
@@ -170,8 +170,7 @@ This _also_ defines an inverse relationship for a `belongs_to` relationship. The
|
|
170
170
|
|
171
171
|
In the above example, `Dish__c` is a Salesforce object type which references the `Restaurant__c` object type through an aptly-named Lookup. There is no restriction on the number of `Dish__c` objects that may reference the same `Restaurant__c`, so we define this relationship as a `has_many` associaition in our `Restaurant` mapping.
|
172
172
|
|
173
|
-
__NOTE__:
|
174
|
-
to always refer to the `Id` of the parent object.
|
173
|
+
__NOTE__: If one side of an association has multiple possible lookup fields, the other side of the association is expected to declare a _single_ lookup field, which will be treated as the canonical lookup for that relationship. The Lookup is assumed to always refer to the `Id` of the object declaring the `has_many`/`has_one` side of the association.
|
175
174
|
|
176
175
|
### Seed your data
|
177
176
|
|
@@ -55,6 +55,25 @@ module Restforce
|
|
55
55
|
|
56
56
|
private
|
57
57
|
|
58
|
+
# Internal: Get the appropriate Salesforce Lookup ID field for the
|
59
|
+
# passed mapping.
|
60
|
+
#
|
61
|
+
# mapping - A Restforce::DB::Mapping.
|
62
|
+
# database_record - An instance of an ActiveRecord::Base subclass.
|
63
|
+
#
|
64
|
+
# Returns a String or nil.
|
65
|
+
def lookup_field(mapping, database_record)
|
66
|
+
inverse = inverse_association_name(target_reflection(database_record))
|
67
|
+
association = mapping.associations.detect { |a| a.name == inverse }
|
68
|
+
return unless association
|
69
|
+
|
70
|
+
if lookup.is_a?(Array)
|
71
|
+
association.lookup
|
72
|
+
else
|
73
|
+
lookup
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
58
77
|
# Internal: Get a list of all newly-constructed records based on this
|
59
78
|
# association, for a set of lookups.
|
60
79
|
#
|
@@ -76,21 +76,6 @@ module Restforce
|
|
76
76
|
salesforce_instance.record[inverse_association.lookup] if salesforce_instance
|
77
77
|
end
|
78
78
|
|
79
|
-
# Internal: Get the appropriate Salesforce Lookup ID field for the
|
80
|
-
# passed mapping.
|
81
|
-
#
|
82
|
-
# mapping - A Restforce::DB::Mapping.
|
83
|
-
# database_record - An instance of an ActiveRecord::Base subclass.
|
84
|
-
#
|
85
|
-
# Returns a String or nil.
|
86
|
-
def lookup_field(mapping, database_record)
|
87
|
-
inverse = inverse_association_name(target_reflection(database_record))
|
88
|
-
association = mapping.associations.detect { |a| a.name == inverse }
|
89
|
-
return unless association
|
90
|
-
|
91
|
-
association.lookup
|
92
|
-
end
|
93
|
-
|
94
79
|
end
|
95
80
|
|
96
81
|
end
|
@@ -21,7 +21,7 @@ module Restforce
|
|
21
21
|
@cache = cache
|
22
22
|
|
23
23
|
target = target_mapping(database_record)
|
24
|
-
lookup_id = "#{
|
24
|
+
lookup_id = "#{lookup_field(target, database_record)} = '#{salesforce_record.Id}'"
|
25
25
|
|
26
26
|
records = []
|
27
27
|
target.salesforce_record_type.each(conditions: lookup_id) do |instance|
|
@@ -21,7 +21,7 @@ module Restforce
|
|
21
21
|
@cache = cache
|
22
22
|
|
23
23
|
target = target_mapping(database_record)
|
24
|
-
query = "#{
|
24
|
+
query = "#{lookup_field(target, database_record)} = '#{salesforce_record.Id}'"
|
25
25
|
|
26
26
|
instance = target.salesforce_record_type.first(query)
|
27
27
|
instance ? construct_for(database_record, instance) : []
|
data/lib/restforce/db/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: restforce-db
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Horner
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|