表題の通りで
attributes nestedを使うと、他のmodelに情報が入るのですが、その際のmodelのtestの方法が見つからないので質問です。
it "is invalid without a images" do image = build(:image, image: nil) image.valid? expect(image.errors[:image]).to include("を入力してください")
☝️普通こんな感じだと思うのですが、
以下は全部あれば通るtestを行った結果です。
image.errors => #<ActiveModel::Errors:0x00007f8e9a6f0790 @base= #<Image:0x00007f8e9884b880 id: nil, image: nil, created_at: nil, updated_at: nil, item_id: 1>, @details={:item=>[{:error=>:blank}], :image=>[{:error=>:blank}]}, @messages={:item=>["を入力してください"], :image=>["を入力してください"]}>
image.rb (model)
accepts_nested_attributes_for :images, allow_destroy: true,reject_if: proc { |attributes| attributes['image'].blank? }
errorsの中身はitemを欲してます。
追記
確かに少し、わかりにくかったですね。
itemが親、imageが子の関係(has_many :images)
itemを保存する時に、imageがないとダメなtestをしたかったんです。
おそらく、validationもうまくいってないと思われるのでその辺りも教えていただけると・・。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/02 14:03
2019/11/02 14:13