なんとなく最近いくつかのWebサービスを触って「あ、こういう作りしちゃうとしんどいんだな・・・」というのが少しだけ分かってきたので、ほんとになんとなくメモっておく。 「下書き」「公開」をstatus=draft/publishedとかpublished=true/falseで表現してはいけない class Article < ApplicationRecord belongs_to :user scope :draft, ->{ where(published: false) } scope :published, -> { where(published: true) } def publish! update!(published: true) end こういうモデルを作ってしまうと 下書きと公開後で「見ることができる人」が異なるべきなんだけど、ふとした拍子に Article.find