Что возвращается при вызове "где"?
У меня следующий вопрос, пусть
@post=Post.where(title: "title1")
что должно быть @post
существует ли title1 или нет? Как я могу проверить, вернул ли "где" какой-либо элемент?
В моем заявлении я только что позвонил
if(@post) .... else .... end
но это всегда входит в другое
1 ответ
Решение
Пытаться:
@post=Post.where(title: "title1").first
затем @post
будет либо Post
объект с title = "title1"
или же nil
,
.where возвращает объект ActiveRecord_Relation, который является результатом фильтрации текущего отношения в соответствии с условиями в аргументах.
Альтернативой является использование find_by, как предложено @D-side в комментариях:
@post = Post.find_by(title: "title1")