Rails - 在单个AR列上序列化“distinct”时返回空json

时间:2014-02-17 21:52:47

标签: ruby-on-rails json ruby-on-rails-4

我的Car模型是JSON序列化的(类CarSerializer< ActiveModel :: Serializer)。但是,对于下面的控制器方法,我只需要一个DISTINCT的reserve_ids列表,如果没有,AR应该返回空的JSON字符串/数组。我尝试使用@cars.blank?进行测试无效,因为nil / empty数组未返回。有关AR对象的检查,请参见下文。

   def get_reserve_ids

    # @cars.inspect ==> #<ActiveRecord::Relation [#<Car id: nil, car_reserve_id: nil>]>
    @cars = Car.select(:car_reserve_id)
    .where(client_id: current_user.client_id).distinct

    # @cars.inspect ==> [nil]
    # @cars = Car.select(:car_reserve_id)
    # .where(client_id: current_user.client_id).map(&:car_reserve_id).uniq

    logger.debug @cars.inspect

    render json: @cars, only: [:car_reserve_id]

  end

1 个答案:

答案 0 :(得分:0)

你应该返回@cars.compact - 它将从数组中删除所有空值,因此你将返回一个空数组。