Lookup fieldset using either string or symbol

This commit is contained in:
Wasif Hossain 2019-07-17 15:51:15 +06:00
parent 433c0c646f
commit 2581fe0362
No known key found for this signature in database
GPG Key ID: 14C15A54E34D7803
3 changed files with 14 additions and 4 deletions

View File

@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
spec.homepage = 'https://github.com/rails-api/active_model_serializers' spec.homepage = 'https://github.com/rails-api/active_model_serializers'
spec.license = 'MIT' spec.license = 'MIT'
spec.files = Dir["CHANGELOG.md", "MIT-LICENSE", "README.md", "lib/**/*"] spec.files = Dir['CHANGELOG.md', 'MIT-LICENSE', 'README.md', 'lib/**/*']
spec.require_paths = ['lib'] spec.require_paths = ['lib']
spec.executables = [] spec.executables = []

View File

@ -12,7 +12,7 @@ module ActiveModel
end end
def fields_for(type) def fields_for(type)
fields[type.singularize.to_sym] || fields[type.pluralize.to_sym] fields[type.to_s.singularize.to_sym] || fields[type.to_s.pluralize.to_sym]
end end
protected protected

View File

@ -5,11 +5,21 @@ require 'test_helper'
module ActiveModel module ActiveModel
class Serializer class Serializer
class FieldsetTest < ActiveSupport::TestCase class FieldsetTest < ActiveSupport::TestCase
def setup
@fieldset = ActiveModel::Serializer::Fieldset.new('post' => %w(id title), 'comment' => ['body'])
end
def test_fieldset_with_hash def test_fieldset_with_hash
fieldset = ActiveModel::Serializer::Fieldset.new('post' => %w(id title), 'comment' => ['body'])
expected = { post: [:id, :title], comment: [:body] } expected = { post: [:id, :title], comment: [:body] }
assert_equal(expected, fieldset.fields) assert_equal(expected, @fieldset.fields)
end
def test_fields_for_accepts_string_or_symbol
expected = [:id, :title]
assert_equal(expected, @fieldset.fields_for(:post))
assert_equal(expected, @fieldset.fields_for('post'))
end end
end end
end end