我是 ruby 的新手,编写了这段代码并工作,但我知道这不是最优雅的方法,你能帮我用 ruby 方式重构它吗?
#Ckeck that is not a repetead user
next if Profile.exists?(:screen_name => t.from_user)
next if SearchResults.exists?(:username => t.from_user)
next if usernames.include? t.from_user
我认为
你的方法很好,但就个人而言,我会做这样的事情(提供信息)......
使用 reject
将集合限制为所需的元素。
def repeat_user(user, usernames)
Profile.exists?(:screen_name => user.from_user) ||
SearchResults.exists?(:username => user.from_user) ||
usernames.include? user.from_user
end
User.all.reject{ |user| repeat_user user, usernames }.each do |user|
# do your stuff here
end