Skip to content

Commit

Permalink
Honor primary_key class properties
Browse files Browse the repository at this point in the history
  • Loading branch information
denyago committed Nov 26, 2012
1 parent c97f942 commit cc371aa
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 5 deletions.
6 changes: 4 additions & 2 deletions lib/remote_association/active_record/relation.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -103,9 +103,10 @@ def fetch_and_join_for_has_any_remote(settings)
keys = @records.uniq.map(&:id) keys = @records.uniq.map(&:id)


remote_objects = fetch_remote_objects(settings.ar_class, keys, settings.ar_accessor) remote_objects = fetch_remote_objects(settings.ar_class, keys, settings.ar_accessor)
join_key = klass.primary_key


@records.each do |record| @records.each do |record|
record.send("#{settings.ar_accessor}=", remote_objects.select { |s| s.send(settings.foreign_key) == record.id }) record.send("#{settings.ar_accessor}=", remote_objects.select { |s| s.send(settings.foreign_key) == record.send(join_key) })
end end
end end


Expand All @@ -115,9 +116,10 @@ def fetch_and_join_for_belongs_to_remote(settings)
return if keys.empty? return if keys.empty?


remote_objects = fetch_remote_objects(settings.ar_class, keys, settings.ar_accessor) remote_objects = fetch_remote_objects(settings.ar_class, keys, settings.ar_accessor)
join_key = settings.ar_class.primary_key


@records.each do |record| @records.each do |record|
record.send("#{settings.ar_accessor}=", remote_objects.select { |s| record.send(settings.foreign_key) == s.id }) record.send("#{settings.ar_accessor}=", remote_objects.select { |s| record.send(settings.foreign_key) == s.send(join_key) })
end end
end end


Expand Down
2 changes: 1 addition & 1 deletion lib/remote_association/belongs_to_remote.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def belongs_to_remote(remote_rel, options ={})
class_name: remote_rel.to_s.classify, class_name: remote_rel.to_s.classify,
foreign_key: remote_rel.to_s.foreign_key, foreign_key: remote_rel.to_s.foreign_key,
association_type: :belongs_to_remote, association_type: :belongs_to_remote,
primary_key: 'id' primary_key: primary_key
}.merge(options.symbolize_keys) }.merge(options.symbolize_keys)


add_activeresource_relation(remote_rel.to_sym, rel_options) add_activeresource_relation(remote_rel.to_sym, rel_options)
Expand Down
4 changes: 3 additions & 1 deletion lib/remote_association/has_many_remote.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -54,8 +54,10 @@ def #{remote_rel} # def custome
if remote_resources_loaded? # if remote_resources_loaded? if remote_resources_loaded? # if remote_resources_loaded?
@#{remote_rel} ? @#{remote_rel} : [] # @customers ? @customers : [] @#{remote_rel} ? @#{remote_rel} : [] # @customers ? @customers : []
else # else else # else
join_key = self.class.primary_key # join_key = self.class.primary_key
@#{remote_rel} ||= #{rel_options[:class_name]}. # @customers ||= Person. @#{remote_rel} ||= #{rel_options[:class_name]}. # @customers ||= Person.
find(:all, params: self.class.build_params_hash(self.id)) # find(:all, params: self.class.build_params_hash(self.id)) find(:all, params: self.class. # find(:all, params: self.class.
build_params_hash(self.send(join_key))) # build_params_hash(self.send(join_key)))
end # end end # end
end # end end # end
Expand Down
3 changes: 2 additions & 1 deletion lib/remote_association/has_one_remote.rb
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -54,7 +54,8 @@ def #{remote_rel}
if remote_resources_loaded? if remote_resources_loaded?
@#{remote_rel} ? @#{remote_rel}.first : nil @#{remote_rel} ? @#{remote_rel}.first : nil
else else
@#{remote_rel} ||= #{rel_options[:class_name]}.find(:first, params: self.class.build_params_hash(self.id)) join_key = self.class.primary_key
@#{remote_rel} ||= #{rel_options[:class_name]}.find(:first, params: self.class.build_params_hash(self.send(join_key)))
end end
end end
Expand Down

0 comments on commit cc371aa

Please sign in to comment.