Я использую 'grape-entity', '~> 0.7.1'
У меня есть га sh в формате:
temp_data = [{sheet_index: 0, other_names: []},{'sheet_index' => 1, 'other_names': ['a']}]
И у меня есть следующие сущности
class Sheet < Grape::Entity
expose :sheet_index, documentation: {type: Integer, desc: "Sheet index"}
expose :other_names, documentation: {type: Array, desc: "Other names"}
end
class Sheets < Grape::Entity
present_collection true
expose :items, as: 'sheet_history', using Entities::Sheet
end
# response from the entities
present temp_data, with: Entities::Sheets
Теперь мне нужно убедиться, что независимо от типа клавиш в моем Ха sh, он все равно должен давать мне правильный вывод для вышеупомянутый случай
expected_response = {"sheet_history" => [{"sheet_index"=>0, "other_names"=>[]}, {"sheet_index"=>1, "other_names"=>["a"]}]}
, но ответ, который я получаю, имеет следующий формат
actual_response = {"sheet_history" => [{"sheet_index"=>0, "other_names"=>[]}, {"sheet_index"=>nil, "other_names"=>nil}]}
, поэтому в фактическом ответе sheet_index
и other_names
второго элемента равны нулю потому что их ключи были строками, а не символами. (См. temp_data
.)
Я сослался на https://github.com/ruby-grape/grape-entity/pull/85, чтобы получить вышеуказанную реализацию, но все еще не могу заставить ее работать без использования HashWithIndifferentAccess или OpenStructs