使用Grape :: Entity暴露has_and_belongs_to_many关系的问题

时间:2014-11-19 20:08:59

标签: ruby-on-rails-4 rails-activerecord grape grape-entity

我有Trip模型,其目的地定义如下:

class Trip < ActiveRecord::Base
    ...
    has_and_belongs_to_many :destinations, join_table: :trips_destinations
    ...
end

我想要做的是公开包含相关目的地的旅行信息。我为目的地定义了这个响应实体:

module Services
  module Trips
    class DestinationResponseEntity < Grape::Entity
      expose :id
      expose :name
    end
  end
end

旅行目的地实体是:

module Services
  module Trips
    class TripResponseEntity < Grape::Entity
      expose :id
      expose :title
      expose :duration
      expose :total_price
      expose :description
      expose :destinations, using: Trips::DestinationResponseEntity
      expose :photo
    end
  end
end

我以这种方式呈现结果:

  present trip, :with => Trips::TripResponseEntity

但是服务的响应总是返回一个空的目标数组。

[{"id":3,"title":"Islandhopping in Thailand","duration":14,"total_price":3450,"description":"Relax under swaying palm trees then jump into crystal-clear waters",**"destinations":[]**,"photo":"http://s3.amazonaws.com/ntradadevelopment/images/trips/3/original/thailand.jpeg"]

在控制台中,我可以正确看到与行程相关的所有目的地。 任何可能导致问题的线索都非常感激。

1 个答案:

答案 0 :(得分:1)

你对Grape :: Entity的所作所为对我来说是正确的。

我遇到了一个类似的问题,结果是我的has_and_belongs_to_many关系没有被正确定义,所以您可能需要再次检查。

特别是,您似乎重写了连接表的默认命名约定。它会绊倒Grape吗?