如何使用改革+干验证来验证嵌套属性?

时间:2016-12-01 13:11:27

标签: ruby-on-rails validation reform trailblazer

触发验证并按预期为我传入的记录(即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返回false,但它不会。我在这里错过了什么?如何实现这一目标?

使用:

  • rails 4.2.7.1
  • reform-rails 0.1.7
  • 改革2.2.2
  • 干验证0.10.3

1 个答案:

答案 0 :(得分:0)

长话短说你应该使用validate(params[:album])而不是valid? http://trailblazer.to/gems/reform/#validation

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

  form = AlbumForm.new(Album.new)
  if form.validate(params[:album])
    form.save
  end
end