In my application, a Language has many Phrases. I'm using
accepts_nested_attributes_for, so by updating the parent I also save
changes to associated phrases. Here my models:

class Language < ActiveRecord::Base
  has_many :phrases
  accepts_nested_attributes_for :phrases
end

class Phrase < ActiveRecord::Base
  validates_presence_of :value
  belongs_to :language
  def before_validation
    print "\nValidating: #{self.value}\n"
  end
end

I was expecting Rails to only validate the phrase that is being
updated, here you can see it's validating all of the existing phrases:

$ script/console
Loading development environment (Rails 2.3.5)
>> lang = Language.first
=> #<Language id: 1, name: "Italiano">
>> lang.phrases
=> [#<Phrase id: 7, value: "Buona notte", language_id: 1>,
#<Phrase id: 10, value: "Ciao", language_id: 1>,
#<Phrase id: 11, value: "Prego", language_id: 1>]

>> lang.phrases_attributes = [{:id => "7", :value => "Buon giorno"}]
=> [{:value=>"Buon giorno", :id=>"7"}]
>> lang.save

Validating: Buon giorno

Validating: Ciao

Validating: Prego

=> true

Validating all phrases is a real problem in my app, as I have tens of
thousands; Is there a way to avoid this?  Is this normal behavior for
Rails?


-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to