The easy way to see what's wrong with the queries is to see how they look 
like in the logs.

Neat trick. I'll remember that. Is there a similar way to get a != version 
> of a query? (risking going off topic) 


For negative versions you have to write some SQL, like

where('created_at NOT BETWEEN ? AND ?', start, finish)


Regards,
K. 

On Friday, October 12, 2012 9:02:40 AM UTC+3, Ben Taylor wrote:
>
> How is Game model defined? My guess is that "game.locations" adds WHERE 
> locatable_type='Game' to query clause. 
>
> Sorry, to clarify a Game has_many :locations. A game itself isn't 
> locatable. Other locatable types are coming through, just not Take. 
>
> Of course all these are just guesses cause I dont now how are your models 
> defined
>
> Yeah, it's kind of hard to summarise the whole thing really quickly. I 
> figured it was better to try and highlight the important bits, than try to 
> show you my entire structure.
>
> One trick - instead of 
>
> where("created_at > ? AND created_at < ?", start, finish)
>
> you can do 
>
> where(created_at: start..finish)
>
> Neat trick. I'll remember that. Is there a similar way to get a != version 
> of a query? (risking going off topic) 
>
>
>  - Ben
>
> On Friday, 12 October 2012 at 4:47 PM, Krasimir Angelov wrote:
>
> Have you checked actual SQL generated in the logs?
>
> How is Game model defined? My guess is that "game.locations" adds WHERE 
> locatable_type='Game' to query clause. The second query finds them cause 
> locatable_type is set explicitly and overrides the former. Of course all 
> these are just guesses cause I dont now how are your models defined.
>
> One trick - instead of 
>
> where("created_at > ? AND created_at < ?", start, finish)
>
> you can do 
>
> where(created_at: start..finish)
>
> Regards,
> K.
>
>
> On Friday, October 12, 2012 3:31:00 AM UTC+3, Ben Taylor wrote:
>
>  Hey there roro-ers,
>
> I'm getting some weird querying inconsistencies and I'm wondering if 
> anyone can help me out. I have a model called "Location" which has a 
> polymorphic association with a "Locatable". 
>
> One of our models didn't correctly create it's associated Location 
> objects, so I retro-actively created them like so:
>
> Take.find_each do |t| 
>   Location.create(
>     locatable: t, 
>     latitude: t.latitude, 
>     longitude: t.longitude, 
>     created_at: t.created_at, 
>     updated_at: t.updated_at
>   ) 
> end
>
> In this case I was lucky because the Take object is only ever located 
> once (unlike our Player objects which are located multiple times).
>
> Now I'm currently running a script which visualises activity in our game. 
> It goes like this:
>
>          frame = []
>     locations = game.locations.where("created_at > ? AND created_at < ?", 
> start, finish)
>     locations = locations.order("created_at ASC")
>     puts "Count of takes: #{locations.where(locatable_type: Take.name
> ).count}"
>
>     locations.find_each do |loc|
>       puts "Found a take!" if loc.locatable_type == Take.name
>       if loc.created_at < current
>         frame << loc
>       else
>         while loc.created_at >= current
>           write(game, frame, current, frame_length)
>           current += frame_length 
>           frame = []
>         end
>         frame << loc
>       end
>     end
>
> So it is querying the DB for all locations between the start and end of 
> the game, then putting them into frame_length chunks. The strange 
> behaviour I'm seeing is that in our output there are no Locations with 
> locatable_type "Take". But when I query the database, they are definitely 
> there. The output from running this is:
>
> Doing
> Count of takes: 693
> Done
>
> Which indicates that locatable_type is never Take, but as per the query 
> before that they definitely are there.
>
> Any ideas about what I'm doing wrong?
>
>  - Ben
>
>  -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby or Rails Oceania" group.
> To view this discussion on the web visit 
> https://groups.google.com/d/msg/rails-oceania/-/UGKnlmGKucsJ.
> To post to this group, send email to [email protected]<javascript:>
> .
> To unsubscribe from this group, send email to 
> [email protected] <javascript:>.
> For more options, visit this group at 
> http://groups.google.com/group/rails-oceania?hl=en.
>  
>  
>  

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
or Rails Oceania" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/rails-oceania/-/Oz14kcgY8bsJ.
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/rails-oceania?hl=en.

Reply via email to