Skip to content

Commit

Permalink
[TARGET] more cleanup around finding target scopes
Browse files Browse the repository at this point in the history
  • Loading branch information
Bram Swenson committed Jun 28, 2011
1 parent ab187ff commit d6a0ef3
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 2 deletions.
18 changes: 16 additions & 2 deletions lib/harmonize/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,14 @@ def harmonize_source_method(harmonizer_name, method_name = nil)
send(method_name)
end

def harmonize_target_method(harmonizer_name, method_name = nil)
method_name ||= :scoped
raise HarmonizerTargetUndefined.new(harmonizer_name.to_s) unless respond_to?(method_name)
target_scope = send(method_name)
raise HarmonizerTargetInvalid.new(harmonizer_name.to_s) unless target_scope.is_a?(ActiveRecord::Relation)
target_scope
end

def validate_harmonize_source(configuration)
case configuration.source.class.name
when "Proc"
Expand All @@ -72,8 +80,14 @@ def validate_harmonize_source(configuration)
end

def validate_harmonize_target(configuration)
configuration.target = lambda { scoped } if configuration.target.nil?
raise HarmonizerTargetInvalid.new(harmonizer_name.to_s) unless configuration.target.call.is_a?(ActiveRecord::Relation)
case configuration.target.class.name
when "Proc"
configuration
when "Symbol"
configuration.target = lambda { harmonize_target_method(configuration.harmonizer_name, configuration.target) }
else
configuration.target = lambda { harmonize_target_method(configuration.harmonizer_name) }
end
configuration
end

Expand Down
1 change: 1 addition & 0 deletions lib/harmonize/errors.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ class HarmonizeError < StandardError ; end
class DuplicateHarmonizerName < HarmonizeError ; end
class UnknownHarmonizerName < HarmonizeError ; end
class HarmonizerSourceUndefined < HarmonizeError ; end
class HarmonizerTargetUndefined < HarmonizeError ; end
class HarmonizerTargetInvalid < HarmonizeError ; end
end

0 comments on commit d6a0ef3

Please sign in to comment.