4

私は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
4

1 に答える 1

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
于 2012-06-12T17:20:44.027 に答える