具有has_and_belongs_to_many的ActiveModel Serializer

时间:2016-04-20 19:07:08

标签: ruby-on-rails ruby ruby-on-rails-4 active-model-serializers rails-api

我有一个名为Event的模型。事件has_and_belongs_to_many :event_sub_categories和EventSubCategory has_and_belongs_to_many :events。我有以下行动:

def index
    @events = Event.where(begins_at: DateTime.now.beginning_of_day..1.week.from_now).group_by{|e| e.begins_at.beginning_of_day}.to_a.to_json
    render json: @events
end

除了一个问题外,该操作完全按照需要返回数据,它没有子类别。我需要json来包含子类别。我尝试制作以下ActiveModel Serializer:

 class EventSerializer < ActiveModel::Serializer
   attributes :id, :name, :event_sub_categories
 end

但上面的序列化器根本不会改变json。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

尝试

class EventSerializer < ActiveModel::Serializer
  attributes :id, :name 
  has_many :event_sub_categories
end

答案 1 :(得分:0)

尝试一下:

1-在您的控制器中,修改查询的方式包括event_sub_categories:

vx.y.z.dev[...]

2-为EventSubCategory模型创建序列化器

3-在事件序列化器中创建方法event_sub_categories

def index
    @events = Event.includes(:event_sub_categories).where(begins_at: DateTime.now.beginning_of_day..1.week.from_now).group_by{|e| e.begins_at.beginning_of_day}.to_a.to_json
    render json: @events
end