Skip to content

Instantly share code, notes, and snippets.

@moxiesoft
Created April 20, 2010 15:45
Show Gist options
  • Save moxiesoft/372657 to your computer and use it in GitHub Desktop.
Save moxiesoft/372657 to your computer and use it in GitHub Desktop.
# Maps parents_symbols to build association chain.
#
# If the parents_symbols find :polymorphic, it goes through the
# params keys to see which polymorphic parent matches the given params.
#
# When optional is given, it does not raise errors if the polymorphic
# params are missing.
#
def symbols_for_association_chain #:nodoc:
polymorphic_config = resources_configuration[:polymorphic]
parents_symbols.map do |symbol|
if symbol == :polymorphic
params_keys = params.keys
key = polymorphic_config[:symbols].find do |poly|
params_keys.include? resources_configuration[poly][:param].to_s
end
if key.nil?
raise ScriptError, "Could not find param for polymorphic association. The request" <<
"parameters are #{params.keys.inspect} and the polymorphic " <<
"associations are #{polymorphic_config[:symbols].inspect}." unless polymorphic_config[:optional]
nil
else
@parent_type = key.to_sym
end
else
symbol
end
end.compact
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment