I believe I clearly demonstrated using the console that this has nothing to do 
with the controller.  Not sure how you got that idea.

On May 12, 2010, at 6:29 AM, Chris Comstock wrote:

> I just experienced a very similar situation and it ended up having nothing to 
> do with the activity.  It was only appearing in production as well.
> 
> I don't know the root cause but I believe I was able to fix the problem by 
> removing the base controller from the cache action.  The commented out line 
> is the original line.  There may be some other ramifications by removing this 
> but it solved my problem for the time being.
> 
> def cache_action?
>     #!logged_in? && controller_name.eql?('base') && params[:format].blank?
>     !logged_in? && params[:format].blank? 
>   end  
> 
> 
> 
> On Tue, May 11, 2010 at 7:25 PM, Patrick Minton <[email protected]> 
> wrote:
> The following query is doing some weird shit in my database:
> 
> >> User.active.find_by_activity({:limit => 5, :require_avatar => false})
> ActiveRecord::RecordNotFound: Couldn't find User with ID=10
>       from 
> /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:1591:in
>  `find_one'
>       from 
> /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:1574:in
>  `find_from_ids'
>       from 
> /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:616:in
>  `find_without_pagination'
>       from 
> /apps/thecommunity/releases/20100509205223/vendor/plugins/community_engine/plugins/paginating_find/lib/paginating_find.rb:103:in
>  `find'
>       from 
> /apps/thecommunity/releases/20100509205223/vendor/plugins/community_engine/app/models/user.rb:93:in
>  `find'
>       from 
> /apps/thecommunity/releases/20100509205223/vendor/plugins/community_engine/app/models/user.rb:165:in
>  `find_by_activity'
>       from 
> /apps/thecommunity/releases/20100509205223/vendor/plugins/community_engine/app/models/user.rb:165:in
>  `map'
>       from 
> /apps/thecommunity/releases/20100509205223/vendor/plugins/community_engine/app/models/user.rb:165:in
>  `find_by_activity'
>       from 
> /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/named_scope.rb:186:in
>  `send'
>       from 
> /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/named_scope.rb:186:in
>  `method_missing'
>       from 
> /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/base.rb:2148:in
>  `with_scope'
>       from (__DELEGATION__):2:in `__send__'
>       from (__DELEGATION__):2:in `with_scope'
>       from 
> /usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/named_scope.rb:179:in
>  `method_missing'
>       from (irb):20
> 
> There are two things that are weird about this:
> 
> 1) There is, indeed, a user with that ID:
> 
> >> u = User.find(10)
> => #<User id: 10, login: "devsample", email: "[email protected]", 
> description: "", avatar_id: nil, crypted_password: 
> "1ce245b87890a2323e7a67087415b1eb976bd9f3", salt: 
> "bc615491c6881df432e99cf24b71712f520dd41a", created_at: "2010-02-24 
> 22:27:30", updated_at: "2010-05-11 21:24:05", remember_token: nil, 
> remember_token_expires_at: nil, stylesheet: nil, view_count: 3, vendor: 
> false, activation_code: "c2f28946842f9822491e4f417d68978b0c63606c", 
> activated_at: nil, state_id: nil, metro_area_id: nil, login_slug: 
> "devsample", notify_comments: false, notify_friend_requests: true, 
> notify_community_news: false, country_id: nil, featured_writer: false, 
> last_login_at: "2010-02-24 22:31:08", zip: nil, birthday: "1980-01-01", 
> gender: nil, profile_public: true, activities_count: 2, sb_posts_count: 0, 
> sb_last_seen_at: "2010-05-11 21:22:00", role_id: 3, first_name: "Dev", 
> middle_name: "", last_name: "Sample", company_id: nil, employer_id: nil, 
> interests: "", community_hopes: "", community_promises: "", job_favorites: 
> "", job_title: "">
> 
> 2) That user isn't active so it shouldn't be within the User.active named 
> scope and therefore should never be found by the find_by_activity query 
> (should it?):
> 
> >> u.active?
> => false
> >> u.activated_at
> => nil
> 
> Anyone have any idea what's going on here?  Looking at the code in user.rb 
> it's kind of unclear to me how this function can limit the users found to 
> those within the :active named scope because it just does a :
> 
>   def self.find_by_activity(options = {})
>     options.reverse_merge! :limit => 30, :require_avatar => true, :since => 
> 7.days.ago   
>     #Activity.since.find(:all,:select => Activity.columns.map{|column| 
> Activity.table_name + "." + column.name}.join(",")+', count(*) as 
> count',:group => Activity.columns.map{|column| Activity.table_name + "." + 
> column.name}.join(","),:order => 'count DESC',:joins => "LEFT JOIN users ON 
> users.id = activities.user_id" )
>     #Activity.since(7.days.ago).find(:all,:select => 'activities.user_id, 
> count(*) as count',:group => 'activities.user_id',:order => 'count 
> DESC',:joins => "LEFT JOIN users ON users.id = activities.user_id" )
>     activities = Activity.since(options[:since]).find(:all, 
>       :select => 'activities.user_id, count(*) as count', 
>       :group => 'activities.user_id', 
>       :conditions => "#{options[:require_avatar] ? ' users.avatar_id IS NOT 
> NULL' : nil}", 
>       :order => 'count DESC', 
>       :joins => "LEFT JOIN users ON users.id = activities.user_id",
>       :limit => options[:limit]
>       )
>     activities.map{|a| find(a.user_id) }
>   end  
> 
> And, in fact, if I do it without the named scope it works fine:
> 
> >> users = User.find_by_activity({:limit => 5, :require_avatar => false}); nil
> => nil
> >> users.include?(u)
> => true
> 
> So, it looks like the :active named scope doesn't actually change which users 
> self.find_by_activity will find (because that isn't a generic ActiveRecord 
> finder method, I assume), but *does* make ActiveRecord think that users that 
> don't meet the conditions in that named scope aren't in the database.  Anyone 
> have any suggestions?  This is making the site crash because this user 
> updated their profile before deactivating and that profile update is one of 
> the most recent activities.
> 
> 
> 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "CommunityEngine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/communityengine?hl=en.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "CommunityEngine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/communityengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"CommunityEngine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/communityengine?hl=en.

Reply via email to