2012-06-12 46 views
4

进出口新的红宝石,写了这个代码和作品,但我知道是不是最优雅的方式来做到这一点,你可以请帮我重构它的红宝石路¡红宝石什么是最优雅的方式做许多未来如果

#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 
+5

看起来不错给我。 –

+1

这类问题属于http://codereview.stackexchange.com –

+1

对不起,这是我第一次在StackOverflow上。请原谅我,我试图以正确的方式做这件事 –

回答

2

我觉得你的方法是好的,但就个人而言,我会做这样的事情(使用所提供的信息)...

使用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 
+0

哦很好的解决方案,我很喜欢它,非常感谢你! –