Palestra do Rs On Rails, na qual demos algumas dicas de boas práticas para manter seu código mais limpo e ter absoluto controle da sua aplicação em produção.
15. class ArticlesController < ActionController::Base
def index
if params[:user_id].blank?
@articles = Article.all
else
@articles = current_user.articles
end
end
end
17. class ArticlesController < ActionController::Base
def index
@articles = Article.all
end
end
class Users::ArticlesController < ActionContro...
def index
@articles = current_user.articles.all
end
end
18. class UsersControllers < ApplicationController
def index
@users = User.all
end
end
class Admin::UsersControllers < ApplicationCont...
def index
@users = User.all
end
end
20. module UsersIndex
def index
@users = User.all
end
end
class UsersController < ApplicationController
include UsersIndex
end
class Admin::UsersControllers < ApplicationController
include UsersIndex
end
21. module UsersIndex
def index
@users = User.all
end
end
class UsersController < ApplicationController
include UsersIndex
end
class Admin::UsersControllers < ApplicationController
include UsersIndex
end
49. module Trashable
extend ActiveSupport::Concern
included do
default_scope where(trashed: false)
scope :trashed, where(trashed: true)
end
def trash
update_attribute :trashed, true
end
end
50. class Post < ActiveRecord::Base
include Trashable
end
class Comment < ActiveRecord::Base
include Trashable
end
65. <% comments.each do |comment| %>
<% if comment.post %>
(...)
<% end %>
<% end %>
66. Comment Load (0.6ms) SELECT `comments`.* FROM `comments`
Post Load (0.4ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`id` =
1 LIMIT 1
Post Load (0.2ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`id` =
2 LIMIT 1
(...)
Post Load (0.2ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`id` =
99 LIMIT 1
Post Load (0.2ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`id`
= 100 LIMIT 1