Skip to content

Instantly share code, notes, and snippets.

@jeffrwells
Last active August 29, 2015 13:56
Show Gist options
  • Select an option

  • Save jeffrwells/8968610 to your computer and use it in GitHub Desktop.

Select an option

Save jeffrwells/8968610 to your computer and use it in GitHub Desktop.
recommendations based on language, time, project
######## This implementation takes one recent, one from same project, one from same language, but code is awful ########
recommended = []
user = post.user
posts = user.posts.published.ordered
#project
recommended += posts.where(repository_id: post.repository_id).not_in(recommended.map(&:id) + [post.id])
#language
match = nil
post.languages.each do |language|
break if (match = posts.where("? = ANY(languages)",language).not_in(recommended.map(&:id) + [post.id]))
end
recommended += match || []
#recent
recommended << posts.not_in(recommended.map(&:id) + [post.id]).first
recommended.compact!
if recommended.length < 3
recommended << posts.not_in(recommended.map(&:id) + [post.id]).first
end
return recommended.compact
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment