Railscast Episode 275 - How I test использует следующий код для отправки пароля сброса пользователей:Рубиновых хэш ракеты против 1,9 синтаксиса
def send_password_reset
generate_token(:password_reset_token)
....
... etc
end
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
Моего вопрос касается предпоследней строки коды: end while User.exists?(column => self[column])
, который прекрасно работает как есть, но вызывает мои функции в потерпеть неудачу, если я поменять хэш-ракете т.е. end while User.exists?(column: self[column])
Failure/Error: user.send_password_reset
ActiveRecord::StatementInvalid:
SQLite3::SQLException: no such column: users.column: SELECT 1 FROM "users" WHERE "users"."column" = 'Y7JJV4VAKBbf77zKFVH7RQ' LIMIT 1
Почему это происходит? Существуют ли ситуации, когда вы должны использовать хеш-ракеты, и есть ли какие-либо рекомендации относительно этого?
Спасибо, это объясняет это ясно, примет за 10 минут – stephenmurdoch
Не только любые символы, только символы, которые являются действительными ярлыками. ': $ set', например, требует hashrocket, как и многие другие допустимые символы. http://stackoverflow.com/a/10004344/479863 –