Railsでデータ運用を長期にしているとModelにValidation入れておけばよかった!!という機会は必ず発生すると思います。
後にジャンクデータであるならまだしも、そのデータの為に他との整合性取れなくなったりなどなど。
基本、Modelの初期段階でValidationとカラム制約はとても必須事項になってくるかと。
ただ、設計段階でValidationを意識しすぎるとサービスにかえって運用をきたすものがあります。
例えば記事関連なんかや、会員データの登録関連などなど。
会員データなら離脱率落ちる落ちますし、この登録データを無しにした時のコンバージェンスは?といったA/Bテストができなくなります。
記事データだと、全データ入れないと投稿できないのは、投稿者やサイト管理者にあとで必ず文句言われますね。
そこで、Validationしすぎ自体はアンチパターンにならないのですが、登録に「下書き/公開」、「仮登録/本登録」といったステータスでValidationを持たせる方法を記載します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Blog < ActiveRecord::Base validates :article, presence: { if: :registration? }, length: { minimum: 50, allow_blank: true } def registration? state == "open" end end blog.state = "open" blog.save |
必要データは通常のValidationをして、「公開」ステータスのものだけ、ステータスに応じたValidationをかける感じになります。
余計なデータは入りやすくなりますが、サービスレベルを保つ上で結構有用性が高いテクニックかと。
このブログは株式会社CoLabMixによる技術ブログです。
GCP、AWSなどでのインフラ構築・運用や、クローリング・分析・検索などを主体とした開発を行なっています。
Ruby on RailsやDjango、Pythonなどの開発依頼などお気軽にお声がけください。
開発パートナーを増やしたいという企業と積極的に繋がっていきたいです。
お問い合わせやご依頼・ご相談など