Как проверить вложенные атрибуты с помощью реформ + сухой проверки?

Проверки запускаются и работают должным образом для атрибутов записи, которую я передаю (т.е. required(:title).filled), но не для атрибутов вложенных моделей (т.е. required(:name).filled в artist).

class AlbumForm < Reform::Form
  property :title

  validation do
   required(:title).filled
  end

  property :artist do
    property :name

    validation do
     required(:name).filled
    end
  end
end

(Фрагмент взят из http://trailblazer.to/gems/reform)

Я жду Albumform.new(album).valid? вернуть ложь, если album.artist.name == nil но это не так. Что мне здесь не хватает? Как этого достичь?

С помощью:

  • рельсы 4.2.7.1
  • реформаторские рельсы 0.1.7
  • реформа 2.2.2
  • сухая проверка 0.10.3

1 ответ

Короче говоря, вы должны использовать validate(params[:album]) вместо valid? http://trailblazer.to/gems/reform/

def create 
  # params album: { name: nil, other_stuff: 'stuff' }

  form = AlbumForm.new(Album.new)
  if form.validate(params[:album])
    form.save
  end
end
Другие вопросы по тегам