私はモデルeclubを持っています。これには多数の招待があり、追加できる招待状の数を制限したいと思います。私のモデルは、このSO answerによると、私は破壊のためにマーク招待を心配ないです提供動作するはずです。このhas_manyアソシエーションの検証エラーが保存を妨げない
class Eclub < ActiveRecord::Base
has_many :invites, dependent: :destroy
validates :invites, length: {maximum: 50, message: 'The maximum number of invites have been sent' }
のように見えます。私のrspecテストでは最初にeclubが作成され、50の招待状が正常に追加されます。その後、私は防ぐにはどうすればよい
invite = Invite.new(name: 'Too Many', email: '[email protected]')
eclub.invites << invite
expect(eclub).to be_invalid
expect(eclub.errors[:invites].first).to include 'maximum number'
expect(eclub.reload.invites.size).to eq 50
最初の二つの期待が通過しますが、最後は
Failure/Error: expect(eclub.reload.invites.size).to eq 50
expected: 50
got: 51
で失敗し、余分なコレクションに追加されてからいかがでしょうか?
私はnを明確にしました。 – Obromios