Railsのuniquenessバリデーションについて
uniquenessバリデーションを使うと、その項目の中で一意であるようにバリデーションがかけられます。
class User validates :email, uniqueness: true end
とすると、emailはUserの中で一意となるようにRails側でバリデーションをかける。
これを、Userが会社に属していて会社の中で一意になるようにバリデーションをかけようとすると
class User validates :email, uniqueness: { scope: :company_id } end
のように、scopeを使って、一意になる範囲を指定する。これをさらに、(例がいいかは少しおいておいて)会社の中で複数の部署に属するユーザはその都度User登録しようとかいう話になって、ある会社のある部署の中で一意というのが書きたいときは、
class User validates :email, uniqueness: { scope: [:company_id, :group_id] }
のように、scopeに配列を渡す形となります。