使用Union Logic的ActiveRecord基于动态属性的查找程序?

时间:2009-06-08 02:21:43

标签: ruby-on-rails ruby activerecord boolean

我想在ActiveRecord中使用'逻辑OR'动态查找器。有人见过这样的事吗?

所以本着这样的精神......

User.find_by_name_and_email("foo", "bar@thud.com")

..你可以做这样的事情..

User.find_by_username_or_email(user_input)

1 个答案:

答案 0 :(得分:5)

您是否经常在数据库中拥有具有可以像这样查找的逻辑值的字段?足以担心使用动态查找器方法?可能不是。为此,named_scope出了什么问题?

class User < ActiveRecord::Base

  named_scope :user_or_email, lambda{ |user_name|
    { :conditions => ["username =? OR email =?", user_name, user_name] }
  }

end

这就是你想要的,我只是不认为这种事情会经常出现,足以为动态发现者辩护,但嘿,我可能是错的。