i created multiple classes 1 test method test wither ruby objects serialized correctly.
the error returned:
undefined method `[]=' nil:nilclass /users/horse/workspace/queryapi/app/models/query_model.rb:193:in `serialize' i run below test_query method through rails console initializing querymodeltester , invoking test_query() method on object.
my code:
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 here model classes above class testing:
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
the problem when initialize @query_hash. in classes initialized in wrong scope. fix it, should move @query_hash = hash.new initialize method, like:
class rangecriteria def initialize @query_hash = hash.new end # ... end class rangebuilder def initialize @query_hash = hash.new end # ... end class bool def initialize @query_hash = hash.new end # ... end hope helps.
good luck!
Comments
Post a Comment