ActiveRecord динамические искатели на основе атрибутов с Union Logic? - PullRequest
1 голос
/ 08 июня 2009

Мне нужны динамические искатели 'логического ИЛИ' в ActiveRecord. Кто-нибудь видел такую ​​вещь?

Так что в духе чего-то подобного ..

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

.. ты мог бы делать такие вещи ..

User.find_by_username_or_email(user_input)

1 Ответ

5 голосов
/ 08 июня 2009

Как часто вы действительно будете иметь поля в вашей базе данных, которые будут иметь одинаковые значения, которые вы можете искать подобным образом? Достаточно ли беспокоиться об использовании метода динамического поиска? Возможно нет. Что не так с named_scope для этого?

class User < ActiveRecord::Base

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

end

Это делает то, что вы хотите, и я просто не думаю, что подобные вещи будут появляться достаточно часто, чтобы оправдать динамические искатели, но, эй, я могу ошибаться.

...