bah...i figured it out. i didn't have a default value of 0 set in the
field so it wasn't updating. now it's working!
the only thing now is that i have a couple thousand users who have 0 for
the count values. what do you think is the best way i can mass update
this field?
def self.up
User.find(:all) do |u|
u.update_attribute :items_count, s.items.count
end
end
That will go through all your users and update the items_count field
for all of them.
~~~~~~~~~~~~~~~
Bryce Roney
[ twitter ][ blog ][ myspace ][ facebook ]
thanks for the quick response!
i just ran it but it didn't seem to update anything.
just curious what is the 's' for in s.items.count?
Oh sorry! I was copying the code out of a project I had.
change s.items.count to u.items.count
-- Bryce Roney
np!
i just tried it with the new code and it says its successful again but
items_count is still showing 0. i checked @user.items.count in one of
my views and that works fine...must be something small. here is my
output of the migration:
skulik@kuliksco-ub:/u1/app/wldev$ rake db:migrate
(in /u1/app/wldev)
== 20081218000000 UpdateItemsCount: migrating
def self.up
User.find(:all) do |u|
u.update_attribute :items_count, s.items.count
end
end
That will go through all your users and update the items_count field
for all of them.
~~~~~~~~~~~~~~~
Bryce Roney
[ twitter ][ blog ][ myspace ][ facebook ]
i think i found the main issue. I think there is supposed to be an each
in there like:
def self.up
User.find(:all).each do |u|
u.update_attribute :items_count, u.items.count
end
end
the weird thing is that now the migration is taking 8 seconds so it
looks promising but the data is still not updated! if i change
u.items.count to a constant like 1 it works fine, but it's not give me
error messages and @user.items.count works in my views so i'm not sure
what's wrong!
ah well, i guess i'll take another look at it tomorrow morning. thanks
for the help so far! hopefully someone can see my silly mistake.
On Dec 19, 5:01�am, Scott Kulik <rails-mailing-l...@andreas-s.net>
hmm...it shouldn't be since @user.items.count in my view shows the count
correctly for each user.
is there another i can do it like this but not using a migration?
i tried to create a rake task but that didn't work. here is my rake
task:
skulik@kuliksco-ub:/u1/app/wldev/lib/tasks$ cat update_items_count.rake
task :updateItemsCount do
User.find(:all) do |u|
u.update_attribute :items_count, s.items.count
end
end
skulik@kuliksco-ub:/u1/app/wldev/lib/tasks$ rake updateItemsCount
(in /u1/app/wldev)
rake aborted!
uninitialized constant User
On Dec 19, 5:01�am, Scott Kulik <rails-mailing-l...@andreas-s.net>
hmm...it shouldn't be since @user.items.count in my view shows the count
correctly for each user.
is there another i can do it like this but not using a migration?
i tried to create a rake task but that didn't work. here is my rake
task:
skulik@kuliksco-ub:/u1/app/wldev/lib/tasks$ cat update_items_count.rake
task :updateItemsCount do
User.find(:all) do |u|
u.update_attribute :items_count, s.items.count
end
end
skulik@kuliksco-ub:/u1/app/wldev/lib/tasks$ rake updateItemsCount
(in /u1/app/wldev)
rake aborted!
uninitialized constant User
(See full trace by running task with --trace)
thanks!
got it. i had to do this:
task(:updateItemsCount => :environment) do
User.find(:all).each do |u|
u.update_attribute :items_count, u.items.count
end
end
it's still not working but at least i can test easier!
On Dec 19, 5:01�am, Scott Kulik <rails-mailing-l...@andreas-s.net>
hmm...it shouldn't be since @user.items.count in my view shows the count
correctly for each user.
is there another i can do it like this but not using a migration?
i tried to create a rake task but that didn't work. here is my rake
task:
skulik@kuliksco-ub:/u1/app/wldev/lib/tasks$ cat update_items_count.rake
task :updateItemsCount do
User.find(:all) do |u|
u.update_attribute :items_count, s.items.count
end
end
skulik@kuliksco-ub:/u1/app/wldev/lib/tasks$ rake updateItemsCount
(in /u1/app/wldev)
rake aborted!
uninitialized constant User
(See full trace by running task with --trace)
thanks!
got it. i had to do this:
task(:updateItemsCount => :environment) do
User.find(:all).each do |u|
u.update_attribute :items_count, u.items.count
end
end
it's still not working but at least i can test easier!
finally got the item count updated! 4 hours on this to realize i needed
to remove
:counter_cache => true
since i think it was protecting the items_count field from being
updated.