It is a bug and we fixed it yesterday on master<https://github.com/rails/rails/pull/6978>. I'm backporting the fixes to 3-2-stable right now.
Rafael Mendonça França http://twitter.com/rafaelfranca https://github.com/rafaelfranca On Thu, Oct 4, 2012 at 11:43 AM, robbytobby < w...@fahrradwerkstatt-freiburg.de> wrote: > Hey > > I' m quite surprised by the behaviour of has_many associations on > new_records, so might someone here tell me if I'm simply missing the point > or is it a Bug? > > ruby 1.9.3p265 > Rails 3.2.8 > > class Invoice < ActiveRecord::Base > has_many :bikes, :dependent => :nullify > end > > class Bike < ActiveRecord::Base > belongs_to Invoice > end > > now a bike does not necessarily belongs to any invoice, so a bike with > invoice_id = nil is perfectly valid. > If I now create a new Invoice and ask for its bikes, everything works as > expected: > > ruby-1.9.3-head :001 > Invoice.new.bikes > => [] > > To my surprise now: > > ruby-1.9.3-head :002 > Invoice.new.bikes.count > (1.9ms) SELECT COUNT(*) FROM "bikes" WHERE "bikes"."invoice_id" IS NULL > => 744 > > and even better (Bike has an attribute :price) > > ruby-1.9.3-head :003 > Invoice.new.bikes.sum(&:price) > Bike Load (30.4ms) SELECT "bikes".* FROM "bikes" WHERE > "bikes"."invoice_id" IS NULL > => 809577.5 > > Well I see that the sql is perfectly logical, but nonetheless not very > practical. > Do I really have to do something ugly like > > class Invoice < ActiveRecord::Base > has_many :bikes, :dependent => :nullify, :conditions => 'invoice_id IS > NOT NULL' > end > > or do I simply miss the point? > > cheers > robbytobby > > > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Core" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/rubyonrails-core/-/kL11IVcm0DQJ. > To post to this group, send email to rubyonrails-core@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-core+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-core?hl=en. > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to rubyonrails-core@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-core+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.