通过自定义属性查找模型

时间:2015-02-20 04:01:09

标签: ruby-on-rails ruby ruby-on-rails-3

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

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]

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

1 个答案:

答案 0 :(得分:3)

我认为您所说的是my_custom_field未存储在数据库中。在这种情况下,您正在寻找的是detect

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

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