Я создал несколько классов с одним тестовым методом, чтобы проверить правильность сериализации рубиновых объектов.
Ошибка вернулась:
undefined method `[]=' for nil:NilClass
from /Users/horse/workspace/queryapi/app/models/query_model.rb:193:in `serialize'
Я запускаю приведенный ниже метод test_query через консоль rails, инициализируя QueryModelTester, а затем вызывая метод test_query() для этого объекта.
Мой код:
class QueryModelTester
def test_query
must = Must.new
range_criteria = RangeCriteria.new
range_criteria.gte = 20140712
range_criteria.lte = 1405134711
range = RangeBuilder.new
range.search_field = "created_time"
range.range_criteria = range_criteria
must.range = range
bool = Bool.new
bool.must = must
main_query = bool.serialize
puts main_query
end
end
Вот классы моделей, которые тестирует вышеуказанный класс:
class RangeCriteria
@query_hash = Hash.new
attr_accessor :gte, :lte
def serialize
if(@gte.present?)
@query_hash[:gte] = @gte
end
if(@lte.present?)
@query_hash[:lte] = @lte
end
if(@gte.present? || @lte.present?)
return @query_hash
end
end
end
class RangeBuilder
@query_hash = Hash.new
attr_accessor :search_field, :range_criteria
def serialize
if(@search_field.present?)
@query_hash[@search_field] = @range_criteria.serialize
return @query_hash[:range] = @query_hash
end
end
end
class Bool
@query_hash = {}
attr_accessor :must
def serialize
if( @must.present? )
@query_hash[:must] = @must.serialize
return @query_hash[:bool] = @query_hash
end
end
end
query_model.rb
содержание - person RAJ   schedule 15.07.2015