Поиск записей на основе разных полей / столбцов?

#ruby-on-rails #ruby-on-rails-3 #rails-activerecord

#ruby-on-rails #ruby-on-rails-3 #rails-activerecord

Вопрос:

У меня есть база данных, в которой хранится информация о некоторых пользователях. Я знаю, например: User.find(1) вернет пользователя с идентификатором: 1

Что я должен вызвать, чтобы найти пользователя по электронной почте? Я много искал, но ничего не смог найти.

Я тоже пробовал User.find(:email => "xyz@abc.com") , но это не работает.

Ответ №1:

Использовать

 User.find_by_email("abc@xyz.com")
  

Необходимо проверить эти два сообщения из railscast (для rails3)

http://railscasts.com/episodes/202-active-record-queries-in-rails-3

http://railscasts.com/episodes/215-advanced-queries-in-rails-3

Комментарии:

1. Просто чтобы что-то добавить, есть также руководство rails по запросам . И здесь показано, что find_by_* доступно динамически.

Ответ №2:

Вы также можете запрашивать

 User.where("email = ?", "abc@xyz.com").first
  

Комментарии:

1. Это неправильное использование ActiveRecord. Вам следует использовать User.where(email: 'abc@xyz.com') .

Ответ №3:

Случайно, вы только что зарегистрировали пользователя и что, чтобы найти этого конкретного пользователя и получить все пользовательские данные через экземпляр,

  1. Вы хотите сохранить это в сеансе[:current_user] = @user
  2. @user = User.find_by_email(параметры [:email])
  3. Вы хотите сделать это в своем методе create в вашем пользовательском контроллере.
  4. Теперь у вас есть доступ к этому новому экземпляру пользователя, который будет полезен в тех случаях, когда вы захотите, чтобы для них была готова страница профиля.
  5. Надеюсь, это не было слишком не по теме, и если да, то надеюсь, что это поможет в ваших будущих проектах! Удачи!

Комментарии:

1. Добро пожаловать в Stack Overflow! Похоже, у вас есть совет, которым вы хотите поделиться, и это здорово, но, похоже, это должно быть по другому вопросу. Это не похоже на «ответ», соответствующий этому вопросу. Stack Overflow пытается поддерживать довольно точное соответствие между вопросами и ответами. Вы даже можете задать свой собственный вопрос и ответить на него самостоятельно, если хотите.