not_heard_by(user, limit) return listened assets
Reported by Tien Dung | October 9th, 2008 @ 04:55 AM
it FAILs because of “user.listens.size > 10”. When it’s not true. conditions == nil => The function gets a random tracks of all tracks, including ones listened by the user.
def self.not_heard_by(user, limit) conditions = (user && user.listens.size > 10 ) ? [“assets.id NOT IN (?) ”,user.listened_to_ids] : nil Asset.find(:all, :conditions => conditions, :order => ‘RAND’, :limit => limit) end
Comments and changes to this ticket
-
sudara October 9th, 2008 @ 05:31 AM
I think we just need to change user.listens.size > 1
That says "If user has ever listened to a song before, then get random radio tracks WITHOUT those songs, otherwise, just get random tracks"
-
Tien Dung October 9th, 2008 @ 02:44 PM
I think should change to user.listens.size > 0
And we can use user.listens.count instead of .size. If I'm not wrong. user.listens.size will query all listens in an array first then calculate the size of the array. user.listens.count will use SQL COUNT to get the number.
-
sudara October 16th, 2008 @ 06:30 AM
- Assigned user changed from sudara to Tien Dung
- State changed from new to resolved
I think this is resolved?
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
kick ass musician's home.