我想将结果返回给按评分算法排序的用户,该评分算法根据用户的朋友个性化。就上下文而言,在我的应用程序中,用户可以将事件添加到他们的日历中。Myevents 是用户和事件之间的连接表。我想根据活动的总参加者人数以及有多少用户的朋友参加该活动来计算分数。
我想做这样的事情:
class Event < ActiveRecord::Base
after_initialize :calculate_score
attr_accessor :score
def calculate_score(user_id)
User.find_by_id(user_id).friends.each do |friend|
if @id = Myevents.find_by_user_id_and_flier_id(friend.id, self.id)
friends_attending_list << @id
end
end
friends_attending_count = friends_attending_list.count
total_attendees_count = Myevents.where(:flier_id => self.id, :attending_status => "1").count
self.score = 100*(friend_attending_count) + 50*(total_attendees_count)
end
end
不幸的是,我找不到将会话的 user_id 传递给模型的好方法......理想情况下,我不想违反 MVC,但我希望能够通过这个计算的分数对结果进行排序。有什么建议吗?