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.

Reply via email to