I was speaking from my experience since it seemed very similar to a
situation I had recently and that is how I resolved it.  I read your
response and was just sharing my solution as it didn't make sense to me
either but it work for me.


On Wed, May 12, 2010 at 11:01 AM, Patrick Minton
<[email protected]>wrote:

> 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]<communityengine%[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]<communityengine%[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