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 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.