Я создал несколько классов с одним методом тестирования, чтобы проверить, что объекты ruby будут правильно сериализованы.NoMethodError undefined method `[] = 'for nil: NilClass
Обнаружена ошибка:
undefined method `[]=' for nil:NilClass
from /Users/horse/workspace/queryapi/app/models/query_model.rb:193:in `serialize'
Я бег ниже test_query метода с помощью консоли рельсов пути инициализации 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' – RAJ