按自定义查找模型 属性

Find a model by a custom property

我有一个模型有自定义 属性:

class User < ActiveRecord
  def my_custom_field
    # ....
  end
end

我需要找到一个具有特定 my_custom_field 的用户。我不能这样做:

User.where(my_custom_field: '123')[0]

不过,我可以这样做:

User.all.select { |x| x == '123'}[0]

但它在性能方面效率不高。有什么更有效的方法?

我想你的意思是 my_custom_field 没有存储在数据库中。在这种情况下,您要查找的是 detect.

users.detect { |user| user.my_custom_field == '123' }

使用 detect 将导致循环在找到结果后立即停止迭代 return。