#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:
Случайно, вы только что зарегистрировали пользователя и что, чтобы найти этого конкретного пользователя и получить все пользовательские данные через экземпляр,
- Вы хотите сохранить это в сеансе[:current_user] = @user
- @user = User.find_by_email(параметры [:email])
- Вы хотите сделать это в своем методе create в вашем пользовательском контроллере.
- Теперь у вас есть доступ к этому новому экземпляру пользователя, который будет полезен в тех случаях, когда вы захотите, чтобы для них была готова страница профиля.
- Надеюсь, это не было слишком не по теме, и если да, то надеюсь, что это поможет в ваших будущих проектах! Удачи!
Комментарии:
1. Добро пожаловать в Stack Overflow! Похоже, у вас есть совет, которым вы хотите поделиться, и это здорово, но, похоже, это должно быть по другому вопросу. Это не похоже на «ответ», соответствующий этому вопросу. Stack Overflow пытается поддерживать довольно точное соответствие между вопросами и ответами. Вы даже можете задать свой собственный вопрос и ответить на него самостоятельно, если хотите.