Validates_uniqueness_of missing in rails 3.0 rc2?

Has anybody noticed validates_uniqueness_of missing in rails 3.0 rc2?
I’m not sure if this is a bug or I’m just doing something wrong.

Here’s what I’m doing.

Class 1:

class Title < ActiveRecord::Base
validates_length_of :language, :is => 3
validates_uniqueness_of :language, :scope => :book_id
validate :language, :is_proper_language_code

validates_presence_of :value

belongs_to :book

def is_proper_language_code
errors.add(:base, “invalid language code”) unless
!ISO_639::ISO_639_2.find{ |lang| lang[0] == self.language }.nil?
end
end

Class 2:

class Book < ActiveRecord::Base
attr_accessible :titles

validates_presence_of :titles

has_many :titles
end

Spec:

before(:each) do
@valid_title_attributes = {:book_id => 1, :language => “eng”, :value
=> “…”}

@book = Book.new
@book.titles.push(Title.new(@valid_title_attributes))

end

it “should not have multiple titles with same language attribute” do
@book.titles.clear
@book.titles.push(Title.new(@valid_title_attributes))
@book.titles.push(Title.new(@valid_title_attributes))
@book.should_not be_valid

  @book.titles.clear
  @book.titles.push(Title.new(@valid_title_attributes))
  @book.should be_valid

end

On 28 Aug 2010, at 20:32, Anthony S. wrote:

Has anybody noticed validates_uniqueness_of missing in rails 3.0 rc2? I’m not sure if this is a bug or I’m just doing something wrong.

It’s still in there, as far as I can see. If it had been removed, you’d
get an error when you try to call ‘validates_uniqueness_of’.

attr_accessible :titles

  @book.titles.clear
  @book.titles.push(Title.new(@valid_title_attributes))
  @book.should be_valid

end

I assume the problem is that “@book.should_not be_valid” is failing? The
uniqueness validator works by querying the database for other matching
records. So if you’re just creating titles in memory, and not saving
them, the uniqueness validator won’t complain about them. Try changing
your 'Title.new’s to ‘Title.create’.

Chris