1

以下のコードは非常に古風で見栄えが悪いためです。しかし、この方法で遊んだ後は機能するだけです。

def duplicated? url
  found = false
  current_user.bookmarks.each do |bookmark|
    if bookmark.url.eql? url
      found = true
    end
  end
  found
end

見つかったローカル変数と if ステートメントを次のように削除しました

def duplicated? url
  current_user.bookmarks.each do |bookmark|
    bookmark.url.eql? url
  end
end

そして、間違った期待される結果を返します。

それを改善する方法はありますか?ありがとう

4

2 に答える 2

10

Enumerable#anyが必要だと思いますか? ここ。一時配列を作成せず、最初の要素が見つかるとすぐに戻るため、マップ/インクルード ペアを使用することをお勧めします。

def duplicated? url
  current_user.bookmarks.any?{|b| b.url.eql? url }
end
于 2012-12-26T13:37:53.320 に答える
2
def duplicated?(url)
   current_user.bookmarks.map{|bm| bm.url}.include?(url)
end
于 2012-12-26T13:44:42.290 に答える