2011年1月24日月曜日

Rails3 複数のカラムでユニーク

ツリー構造のカテゴリで

例えば、カテゴリ名を重複させたくないというのは簡単だけど、親子関係を持つカテゴリで親同士内、子同士内、孫同士内ででだけ名前の重複をさせたくないという時にRailsでどう書くのか。

マイグレーション

def self.up
  create_table :categories do |t|
  ...
  end
  add_index :categories, [:parent_id, :name], :unique => true
end

モデルのバリデーション

class Category < ActiveRecord::Base
  acts_as_tree
  validates_uniqueness_of :name, :scope => :parent_id
end

0 件のコメント: