I''m using Rails 3.0.0rc and have the following models: class User has_many :readings has_many :conversations, :through=>:readings end class Reading belongs_to :user belongs_to :conversation end class Conversation has_many :readings has_many :users, :through=>:readings end and this controller code: class ConversationsController def show @user = User.find(params[:user_id]) @conversation = @user.conversations.find(params[:id]) debugger end end After requesting conversations#show, go to debug console and:> User.class.object_id=> 116350> @conversation.users.first.class.object_id=> 33660870> @conversation.users.first.instance_of? User=> true # Right Then leave debugging and request the page again:> User.class.object_id=> 116350> @conversation.users.first.class.object_id=> 36497930> @conversation.users.first.instance_of? User=> true # Right And then, request the page again:> User.class.object_id=> 116350> @conversation.users.first.class.object_id=> 36497930> @conversation.users.first.class.to_s == User.to_s=> true> @conversation.users.first.instance_of? User=> false # Wrong! This last evaluation is wrong, and breaks equality checks and expressions such as @conversation.users.include?(some_user) If I disable class caching, the problem disappears (but that''s not ideal for development). Maybe I''m doing something that breaks @reflection in association_proxy.rb? Any ideas? -- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
On 29 Aug 2010, at 03:34, Jose wrote:> This last evaluation is wrong, and breaks equality checks and > expressions such as @conversation.users.include?(some_user) > > If I disable class caching, the problem disappears (but that''s not > ideal for development). Maybe I''m doing something that breaks > @reflection in association_proxy.rb? Any ideas?It looks as though you''re keeping a reference to the conversation object between requests. The association class is cached in the association''s reflection information and if you don''t re-create the object every request you''ll get an old copy of the User class. This only affects development mode where the classes are reloaded on every request. You can reproduce the effect in the console:>> c = Conversation.first=> #<Conversation id: 1, created_at: "2010-08-30 05:07:14", updated_at: "2010-08-30 05:07:14">>> c.users.first.instance_of?(User)=> true>> reload!Reloading... => true>> c.users.first.instance_of?(User)=> false>> c = Conversation.first=> #<Conversation id: 1, created_at: "2010-08-30 05:07:14", updated_at: "2010-08-30 05:07:14">>> c.users.first.instance_of?(User)=> true Andrew -- 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+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.