Rails 3.2.3では、リンクモデルに2つのフィールドの一意の組み合わせがあることを検証したいと思います。以下に示すように、テストとテストに合格する検証がありますが、これを行うためのより良い方法があるようです。たとえば、一意性のあるインデックスを使用する方がよいでしょうか。もしそうなら、なぜですか?
# link_test.rb
...
test "cannot create two links with same name and url" do
Link.create!(:name => 'example', :url => 'http://www.example.com')
assert_raise(ActiveRecord::RecordInvalid, 'could create two links with same name and url'){Link.create!(:name => 'example', :url => 'http://www.example.com')}
end
...
# link.rb
class Link < ActiveRecord::Base
...
validates :name, :uniqueness => {:scope => :url, :message => 'cannot have two entries with same name and url'}
...
end