validates_uniqueness_of missing in rails 3.0 rc2?

2 views
Skip to first unread message

Anthony Smith

unread,
Aug 28, 2010, 3:32:08 PM8/28/10
to rubyonra...@googlegroups.com
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

Chris Mear

unread,
Aug 28, 2010, 5:01:42 PM8/28/10
to rubyonra...@googlegroups.com
On 28 Aug 2010, at 20:32, Anthony Smith 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'.
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


Reply all
Reply to author
Forward
0 new messages