讃岐小僧のEngineering×Techメモ

未経験から挑戦中のプログラミングや、趣味の野球や狩猟について、その他、ビジネスやテクノロジーをテーマに様々なことをつぶやく場所です。

【Rails】Viewのリファクタリング

リファクタリングとは

リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することである。

wiki~リファクタリング

なんのためにやるのか(小僧主観)

  • 他の人が見てもわかりやすくするため(見通しをよくする)
  • コードを再利用できるようにするため

Railにおける具体的なリファクタリング(View)

下記のような複雑なデータの呼び出しコードがViewにあるとする。

<% Article.where(status: 1).order(likes_count: :desc).limit(10).each do |article| %>
  <%= article.title %>
<% end %>

ステータスが1で、likeが多い順で、10個だけで、、、、
とにかくソートの条件も多く、これViewでやるより、データをやり取りするモデルでやる方がいいのでは?

ということで、下記のようにリファクタリング。。。

モデル

class Article < ActiveRecord::Base
  scope :popular, -> { order(likes_count: :desc) }
  enum status: { draft: 0, published: 1 }
end

コントローラー

def index
  @articles = Article.published.popular.limit(10)
end

ビュー

<% @articles.each do |article| %>
  <%= article.title %>
<% end %>

当初、Article.where(status: 1)となっていてここだけ見たら確実に「これどんな状態もの?」ってなるが、publishedに変換されるととても理解しやすいし、publishedで再利用もしやすくなる。

なるほどーとなったのでメモしてきました。