Я выяснил, как включить дочерние элементы в результат to_json, создав метод as_json в модели папок.
def as_json(options={ })
super(
options.merge(
:include => {
:children => { }
}
)
)
end
Приведенный выше код дает мне список дочерних элементов, но я хочу, чтобывключить подсчет не в список детей.Я также хочу отфильтровать его только по «активным» дочерним элементам.
Кажется, я не могу найти эффективный способ сделать это.
Я использую приведенный ниже код для возвратасписок папок.
def index
@folders = Folder.all(:order => "Name")
respond_with(@folders) do |format|
format.jsonp { render :json => @folders, :callback => params[:callback] }
end
end
Наконец, я хочу убедиться, что счетчик возвращается во всех результатах, а не только в json.json является наиболее важным, но я хочу убедиться, что он есть и в других.
Я думал, что смогу добавить счетчик для каждой из папок, возвращаемых @folders после запроса, используя.размер.Тем не менее, это, похоже, не работает ...
Затем я начал изучать добавление метода к модели папки, например ...
def child_count
write_attribute(:child_count, children.size)
end
Но, посмотрев на него, японял, что это на самом деле не сработает ...
Так что теперь я смотрю на: выберите, чтобы сделать немного магии sql ... но я действительно не хочу идти по этому пути, если есть более чистый путь.
Советы приветствуются!