I wonder id it is normal behaviour that when building an assosiation 
'build' method , the returned size of association array changes despite the 
objet is nt saved yet ? Here is a short exampe to illustrate that:

class User < ActiveRecord::Base
    has_many :posts, dependent: :destroy
end

class Post < ActiveRecord::Base
    belongs_to :user
end

Nothing complex until now. When I play with that in the console:
Loading development environment (Rails 4.2.0)
irb(main):001:0> user = User.first
  User Load (0.0ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."id" 
ASC LIMIT 1
=> #<User id: 1, name: "toto", created_at: "2015-01-16 11:18:41", 
updated_at: "2015-01-16 11:18:41">
irb(main):002:0> user.posts.size
   (0.0ms)  SELECT COUNT(*) FROM "posts" WHERE "posts"."user_id" = ?  [[
"user_id", 1]]
=> 0
irb(main):003:0> post = user.posts.build(title: 'ruby')
=> #<Post id: nil, user_id: 1, title: "ruby", created_at: nil, updated_at: 
nil>
irb(main):004:0> user.posts.size
=> 1
irb(main):005:0>

As you see the size of user posts is changed by 1. Why ? The post is not 
still saved to the database. The user_id is nil. I had to apply some 
validation before adding a new post tp ths user, that's why I wonder if it 
is normal adn how to display just the existing User posts without using 
'select' for example.

*Rails version: 4.2.0, Ruby 2.1.5*

Thank you.


-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/d36227b6-ee89-4f48-86b1-1db9fe6c20fc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to