rodrigo3n wrote:> Hello everyone, I gotta start an app that have to give icons to users
> conform they use the application. For example, a user has bought 10
> products so he gets icons symbolizing his activity. A user who has
> bought 5 items has 2 icons and a user who bought 15 has more. The more
> the use the app, the more the icons they get. My doubt is, how to
> implement this? Does anyone have a solution, I can''t imagine how
to
> implement this, any gem or normal Rails approach?
>
> Thanks for your attention,
> Rodrigo Alves.
2 approaches i can think of.
1) simple but not very efficient approach: when you render out the
view, make a decision at render time whether the user has earned an
award. You could do a helper for this pretty easily, eg
def usage_icon_for(user)
bought = user.bought_products.size #replace with your logic
if bought > 20
image_tag "icons/bought_20.png"
elsif bought > 10
image_tag "icons/bought_10.png"
else
nil #could replace with a different icon
end
end
2) Nicer, more efficient and more flexible way: create a model for the
''achievements'', and another for the join table to join
achievements to
users (which you could call achievement_awards), and have the icons
represent the achievements. Ie
User
has_many :achievement_awards
has_many :achievements, :through => :achievement_awards
AchievementAward
#models the awarding of an achievement to a user
#needs user_id & achievement_id fields, plus created_at
belongs_to :user
belongs_to :award
Achievement
#fields could be- name, description, icon, where icon is the path to
the icon graphic (relative to the images folder)
Now, you need to put hooks into your code to award these achievements
when the user does stuff. Use after_save for example on the model which
represents the user buying a product.
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.