railsのモデルにorderの処理を記述する
コントローラーにorder(created_at: :desc)が多くなると、すごく可読性が悪くなるなって感じました。
よく、こういう感じなことが起こると思います。
@user = current_user @posts = @user.posts.order(created_at: :desc).page(params[:page])
ここからさらにタグがあるので、includeをして・・・ってなるとこうなります。
@user = current_user @posts = @user.posts.order(created_at: :desc).page(params[:page]).includes(:tags)
可読性が悪くなります。
並び順はモデル側の処理なので、モデル側で記述してみます。
class User < ActiveRecord::Base has_many :posts, -> { order('created_at DESC') }, dependent: :destroy end
ラムダ式で、すぐにorderを処理しろという風に書きます。
これでorderを書かずによくなります。
@user = current_user @posts = @user.posts.page(params[:page]).includes(:tags)
余計な情報がなくなったと思います。 こういう書き方もあるよーって方がいたら教えて下さい。