Имам няколко сценария, при които бих искал да направя възможно най-малко извиквания на DB чрез нетърпеливо зареждане, но не успях да го направя добре.
Предвид двата сценария по-долу, как мога да променя моя RABL, за да извършвам възможно най-малко разговори?
МОДЕЛ НА ОБЕКТ:
Posts
-> belongs_to user
-> has_many: Comments
-> Comment belongs_to user
-> has_many: Tags
-> Tag belongs_to user
RABL (И двете ще накарат DB да извършва много индивидуални повиквания)
node(:comments) do |p|
p.filtered_comments(@user)
end
child :tags do
attribute :text
child :users do
attribute :nickname
end
end
ЗАПИТВАНЕ КОНТРОЛЕР
Post.includes(user, comments, tags)...
ПОСТ.РБ
def filtered_comments
comments = self.comments.where(:blocked=>false).all
json = Rabl::Renderer.json(comments, 'comments/list', view_path: 'app/views')
JSON.parse(json).map do |c|
c['comment']
end
end
filtered_comments
, ако той не приема нито един? - person Ismael   schedule 31.12.2012