support both e.g. `watcher` and `watcher_id`

the previous fix only made `watcher` work, not the latter
pull/4967/head
Markus Kahl 8 years ago
parent e0e9af2d61
commit dad0e5313f
  1. 12
      lib/api/utilities/property_name_converter.rb

@ -109,18 +109,26 @@ module API
# leaves other names untouched.
# e.g. status_id -> status
def denormalize_foreign_key_name(attribute, context)
id_name = "#{attribute}_id"
name, id_name = key_name_with_and_without_id attribute
# When appending an ID is valid, the context object will understand that message
# in case of a `belongs_to` relation (e.g. status => status_id). The second check is for
# `has_many` relations (e.g. watcher => watchers).
if context.respond_to?(id_name) || context.respond_to?(attribute.pluralize)
if context.respond_to?(id_name) || context.respond_to?(name.pluralize)
id_name
else
attribute
end
end
def key_name_with_and_without_id(attribute_name)
if attribute_name =~ /^(.*)_id$/
[$1, attribute_name]
else
[attribute_name, "#{attribute_name}_id"]
end
end
# expands short custom field column names to be represented in their long form
# (e.g. cf_1 -> custom_field_1)
def expand_custom_field_name(attribute)

Loading…
Cancel
Save