Parent model running validations on all existing children when using accepts_nested_attributes_for

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?