タグ

ブックマーク / hivecolor.com (3)

  • concerned_withパターンでModelを分かりやすく分割する

    記事では、concerned_withパターンを使ってModelを分かりやすく分割する方法について解説します。 この方法を覚えておくと、gemでよく見かける下記のような不思議な書き方を自分で実装できるようになります。 concerned_withパターンとは concerned_withパターンとは、RailsのModelを機能単位で分割する時に使えるデザインパターンです。 少なくとも2011年の時点で存在してたようですが、Webで検索してもあまり情報が見付からない、不遇な?デザインパターンです。 一例として、バリデーションだけを別ファイルに定義する例はこんな感じです。

  • ActiveRecord4のバリデーションで複数カラムにユニーク制約を付ける方法

    usersテーブルにuser_id、item_idカラムがある時、この2つのカラムの組み合わせでユニーク制約のバリデーションを行うコードは下記の通り。 scopeの配列に値を追加すれば、3カラム以上のユニーク制約バリデーションにすることも出来ます。 上記のバリデーションではuser_idカラムにのみエラー情報がくっつくため、HTMLフォームと組み合わせて使っている場合はuser_idのフォームにのみエラー情報が表示される点に注意が必要です。 「Railsのモデルに複合一意制約を定義する方法」にもう少し詳しく書いてあります。 また、ユニーク制約のバリデーションを行う場合でも、テーブルにもユニーク制約を付けるのを忘れないようにしましょう。バリデーションだけだとレースコンディションの場合に問題が発生します。

  • PS1とPROMPT_COMMANDの違い

    PROMPT_COMMANDはPS1の描画前に実行される PS1はプロンプトに表示される文字列の指定に使う PROMPT_COMMANDは$HOSTNAMEとかが使える PS1には\\hとかが使える プロンプトに表示される文字列をPROMPT_COMMANDで指定することもできますが、そういう用途にはPS1を使った方が簡単です。 PROMPT_COMMANDは、環境によりますが、ウインドウタイトルを変える用途に使われていることが多いかもです。 PS1とPROMPT_COMMANDのより詳しい使い分けについては、このページに詳しく書いてあります。 PS1とPROMPT_COMMAND, GNU screenでの活用も PS1だけでなく、PS2, PS3, PS4があることを上記のページで初めて知りました…。 参考リンク PS1とPROMPT_COMMAND, GNU screenでの活用も

  • 1