You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to rubyonra...@googlegroups.com
Say you have an app not dissimilar to StackOverflow where users vote on posts. Say an Up Vote causes the voter to receive one reputation point. You might see something like this in the vote_up model:
class UpVote < ActiveRecord::Base belongs_to :user after_create :increase_user_reputation
private
def increase_user_reputation user = self.user user.reputation == user.reputation + 1 end end
There is one issue with this code: The value 1 is hard coded. Where does such a value belong? Another issue is that some UpVote should have no knowledge of user.reputation. We solve this by changing the callback:
def increase_user_reputation
self.user.modify_reputation(1)
end
Then we add an instance method to User:
def modify_reputation(reputation) self.reputation = self.reputation + reputation self.save! end
Questions...
1. Who's responsible for calling save! ? The increase_user_reputation inside the UpVote model or the modify_reputation method inside the user model? 2. The +1 one to reputation doesn't seem like a good idea to hard code. Where does Rails keep such configuration settings? 3. Does the code look reasonable? Are there any shortcuts?
Mohamad El-Husseini
unread,
Jan 31, 2012, 6:48:37 AM1/31/12
Reply to author
Sign in to reply to author
Forward
Sign in to forward
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message