valid?
- это метод, предоставляемый ActiveRecord::Validations
, и он вызывается для самой записи, но вы вызываете его для name
(a String
) возврата из @mountain.name
. Просто удалите name
перед вызовом valid?
if @mountain.save && @mountain.valid?
Кроме того, save
вызывает valid?
внутри, прежде чем попытаться сохранить запись в базе данных. И save
возвращает false
, когда запись недействительна. Это означает, что часть && @mountain.name.valid?
в вашем коде не нужна, просто полностью удалите ее из строки:
if @mountain.save