使用 ActiveStorage
组件,为了避免 N+1
查询,使用了 has_one_attached: :field
对应的 with_attached_field
方法,之后就出现了多次 Rendered
。
这里 去掉 .with_attached_attachment
.with_attached_icon
这两个方法之后就正常了。
Started GET "/api/v1/posts?writable_id=2&writable_type=Navigation&query=%E6%96%87%E7%AB%A0" for ::1 at 2021-07-15 16:51:34 +0800
(69.6ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC
Processing by PostsController#index as */*
Parameters: {"writable_id"=>"2", "writable_type"=>"Navigation", "query"=>"文章"}
Navigation Load (69.0ms) SELECT `navigations`.* FROM `navigations` WHERE `navigations`.`id` = 2 LIMIT 1
↳ app/controllers/posts_controller.rb:10:in `index'
Rendering posts/index.json.jbuilder
(68.9ms) SELECT COUNT(*) FROM `posts` INNER JOIN `writings` ON `posts`.`id` = `writings`.`post_id` WHERE `writings`.`writable_id` = 2 AND `writings`.`writable_type` = 'Navigation' AND (title like '%文章%' or content like '%文章%')
↳ app/views/posts/index.json.jbuilder:1
Post Load (137.4ms) SELECT `posts`.* FROM `posts` INNER JOIN `writings` ON `posts`.`id` = `writings`.`post_id` WHERE `writings`.`writable_id` = 2 AND `writings`.`writable_type` = 'Navigation' AND (title like '%文章%' or content like '%文章%') ORDER BY `posts`.`id` DESC LIMIT 25 OFFSET 0
↳ app/views/posts/index.json.jbuilder:2
Writing Load (68.0ms) SELECT `writings`.* FROM `writings` WHERE `writings`.`writable_type` = 'Navigation' AND `writings`.`post_id` IN (47, 46, 45, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22)
↳ app/views/posts/index.json.jbuilder:2
Navigation Load (78.1ms) SELECT `navigations`.* FROM `navigations` WHERE `navigations`.`id` IN (1, 2)
↳ app/views/posts/index.json.jbuilder:2
Writing Load (75.3ms) SELECT `writings`.* FROM `writings` WHERE `writings`.`writable_type` = 'Theme' AND `writings`.`post_id` IN (47, 46, 45, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22)
↳ app/views/posts/index.json.jbuilder:2
Theme Load (65.9ms) SELECT `themes`.* FROM `themes` WHERE `themes`.`id` = 12
↳ app/views/posts/index.json.jbuilder:2
ActiveStorage::Attachment Load (73.8ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' AND `active_storage_attachments`.`record_id` IN (47, 46, 45, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22)
↳ app/views/posts/index.json.jbuilder:2
ActiveStorage::Attachment Load (84.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' AND `active_storage_attachments`.`record_id` IN (47, 46, 45, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22)
↳ app/views/posts/index.json.jbuilder:2
Rendered posts/_post.json.jbuilder (Duration: 1.4ms | Allocations: 322)
Rendered posts/_post.json.jbuilder (Duration: 0.2ms | Allocations: 73)
Rendered posts/_post.json.jbuilder (Duration: 0.2ms | Allocations: 73)
Rendered posts/_post.json.jbuilder (Duration: 0.2ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.2ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.2ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.2ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.3ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.2ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.2ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.2ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/_post.json.jbuilder (Duration: 0.1ms | Allocations: 74)
Rendered posts/index.json.jbuilder (Duration: 1056.0ms | Allocations: 38657)
Completed 200 OK in 1524ms (Views: 131.5ms | ActiveRecord: 1338.4ms | Allocations: 59390)
下面是相关代码
# PostsController#index
def index
scope = Post.all
if params[:writable_id].present? and params[:writable_type].present?
writable = case params[:writable_type]
when Navigation.name
Navigation.find(params[:writable_id])
when Theme.name
Theme.find(params[:writable_id])
else
raise ArgumentError, "writable_type: #{params[:writable_type]} is invalid."
end
scope = writable.posts
end
scope = scope.where(kind: params[:kind]) if params[:kind].present?
scope = scope.where("title like ?", "%#{params[:query]}%") if params[:query].present?
@posts = scope.with_attached_attachment
.with_attached_icon
.preload(:navigations, :themes)
.page(params[:page]).per(params[:limit])
.order(id: :desc)
end
class Post < ApplicationRecord
enum kind: { notice: 0, article: 1 }
enum source: { original: 0, link: 1 }
enum jump_type: { jump_link: 0, mini_program: 1 }
has_one_attached :icon
has_one_attached :attachment
has_many :writings
has_many :navigations, through: :writings, source: :writable, source_type: 'Navigation'
has_many :themes, through: :writings, source: :writable, source_type: 'Theme'
end
下面是去掉 .with_attached_attachment
.with_attached_icon
这两个方法之后 log
Started GET "/api/v1/posts?writable_id=2&writable_type=Navigation&query=%E6%96%87%E7%AB%A0" for ::1 at 2021-07-15 17:20:31 +0800
(64.5ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC
Processing by PostsController#index as */*
Parameters: {"writable_id"=>"2", "writable_type"=>"Navigation", "query"=>"文章"}
Navigation Load (72.1ms) SELECT `navigations`.* FROM `navigations` WHERE `navigations`.`id` = 2 LIMIT 1
↳ app/controllers/posts_controller.rb:10:in `index'
Rendering posts/index.json.jbuilder
(60.8ms) SELECT COUNT(*) FROM `posts` INNER JOIN `writings` ON `posts`.`id` = `writings`.`post_id` WHERE `writings`.`writable_id` = 2 AND `writings`.`writable_type` = 'Navigation' AND (title like '%文章%')
↳ app/views/posts/index.json.jbuilder:1
Post Load (229.0ms) SELECT `posts`.* FROM `posts` INNER JOIN `writings` ON `posts`.`id` = `writings`.`post_id` WHERE `writings`.`writable_id` = 2 AND `writings`.`writable_type` = 'Navigation' AND (title like '%文章%') ORDER BY `posts`.`id` DESC LIMIT 25 OFFSET 0
↳ app/views/posts/index.json.jbuilder:2
Writing Load (77.0ms) SELECT `writings`.* FROM `writings` WHERE `writings`.`writable_type` = 'Navigation' AND `writings`.`post_id` IN (47, 46, 45, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22)
↳ app/views/posts/index.json.jbuilder:2
Navigation Load (75.7ms) SELECT `navigations`.* FROM `navigations` WHERE `navigations`.`id` IN (1, 2)
↳ app/views/posts/index.json.jbuilder:2
Writing Load (72.5ms) SELECT `writings`.* FROM `writings` WHERE `writings`.`writable_type` = 'Theme' AND `writings`.`post_id` IN (47, 46, 45, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22)
↳ app/views/posts/index.json.jbuilder:2
Theme Load (94.7ms) SELECT `themes`.* FROM `themes` WHERE `themes`.`id` = 12
↳ app/views/posts/index.json.jbuilder:2
ActiveStorage::Attachment Load (82.1ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 47 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (68.2ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 47 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 265.2ms | Allocations: 4326)
ActiveStorage::Attachment Load (67.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 46 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (76.4ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 46 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 149.8ms | Allocations: 1787)
ActiveStorage::Attachment Load (71.2ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 45 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (93.4ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 45 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 171.1ms | Allocations: 1771)
ActiveStorage::Attachment Load (78.6ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 43 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (64.2ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 43 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 146.7ms | Allocations: 1772)
ActiveStorage::Attachment Load (69.9ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 42 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (64.9ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 42 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 139.1ms | Allocations: 1772)
ActiveStorage::Attachment Load (70.5ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 41 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (86.1ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 41 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 161.7ms | Allocations: 1778)
ActiveStorage::Attachment Load (70.0ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 40 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (77.7ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 40 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 153.8ms | Allocations: 1772)
ActiveStorage::Attachment Load (75.5ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 39 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (85.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 39 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 166.5ms | Allocations: 1772)
ActiveStorage::Attachment Load (84.6ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 38 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (104.6ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 38 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 195.1ms | Allocations: 1772)
ActiveStorage::Attachment Load (91.9ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 37 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (73.4ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 37 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 170.7ms | Allocations: 1772)
ActiveStorage::Attachment Load (67.8ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 36 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (78.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 36 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 153.8ms | Allocations: 1772)
ActiveStorage::Attachment Load (68.2ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 35 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (63.4ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 35 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 137.9ms | Allocations: 1773)
ActiveStorage::Attachment Load (85.7ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 34 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (62.6ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 34 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 152.7ms | Allocations: 1772)
ActiveStorage::Attachment Load (65.1ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 33 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (70.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 33 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 140.4ms | Allocations: 1772)
ActiveStorage::Attachment Load (68.9ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 32 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (75.7ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 32 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 151.2ms | Allocations: 1772)
ActiveStorage::Attachment Load (70.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 31 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (78.2ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 31 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 153.3ms | Allocations: 1772)
ActiveStorage::Attachment Load (74.5ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 30 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (74.9ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 30 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 155.8ms | Allocations: 1772)
ActiveStorage::Attachment Load (81.9ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 29 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (84.5ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 29 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 172.7ms | Allocations: 1776)
ActiveStorage::Attachment Load (73.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 28 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (71.7ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 28 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 150.7ms | Allocations: 1772)
ActiveStorage::Attachment Load (79.9ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 27 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (75.2ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 27 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 160.4ms | Allocations: 1772)
ActiveStorage::Attachment Load (80.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 26 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (74.2ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 26 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 159.8ms | Allocations: 1772)
ActiveStorage::Attachment Load (108.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 25 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (85.2ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 25 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 199.2ms | Allocations: 1772)
ActiveStorage::Attachment Load (70.8ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 24 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (63.1ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 24 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 139.1ms | Allocations: 1772)
ActiveStorage::Attachment Load (78.2ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 23 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (79.5ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 23 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 162.6ms | Allocations: 1772)
ActiveStorage::Attachment Load (67.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 22 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'icon' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:5
ActiveStorage::Attachment Load (83.7ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 22 AND `active_storage_attachments`.`record_type` = 'Post' AND `active_storage_attachments`.`name` = 'attachment' LIMIT 1
↳ app/views/posts/_post.json.jbuilder:14
Rendered posts/_post.json.jbuilder (Duration: 156.9ms | Allocations: 1773)
Rendered posts/index.json.jbuilder (Duration: 4976.1ms | Allocations: 79057)
Completed 200 OK in 5492ms (Views: 224.6ms | ActiveRecord: 5210.9ms | Allocations: 99695)