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

Zek*_*eke 1 ruby activerecord boolean ruby-on-rails

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

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

User.find_by_name_and_email("foo", "bar@thud.com")
Run Code Online (Sandbox Code Playgroud)

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

User.find_by_username_or_email(user_input)
Run Code Online (Sandbox Code Playgroud)

nit*_*der 5

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

class User < ActiveRecord::Base

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

end
Run Code Online (Sandbox Code Playgroud)

这样做你想要的,我只是不认为这种事情会经常弹出足以证明动态查找器的合理性,但是嘿,我可能是错的.