由于下面的代码看起来很古老而且丑陋。但玩这种方式之后才有效。
def duplicated? url
found = false
current_user.bookmarks.each do |bookmark|
if bookmark.url.eql? url
found = true
end
end
found
end
我删除了本地var found和if语句,如此
def duplicated? url
current_user.bookmarks.each do |bookmark|
bookmark.url.eql? url
end
end
它会返回错误的预期结果。
知道如何改进吗?谢谢
答案 0 :(得分:10)
我认为你需要Enumerable#any?。应该首选map / include对,因为它不会创建临时数组,并且会在找到的第一个元素上提前返回。
def duplicated? url
current_user.bookmarks.any?{|b| b.url.eql? url }
end
答案 1 :(得分:2)
def duplicated?(url)
current_user.bookmarks.map{|bm| bm.url}.include?(url)
end