私は次の2つのモデルを持っています:
class Human < ActiveRecord::Base
has_many :homes, inverse_of: :human, validate: true, autosave: true
accepts_nested_attributes_for :homes, allow_destroy: true
end
class Home < ActiveRecord::Base
belongs_to :human, inverse_of: :homes
validates :human, presence: true
validates :address, presence: true, length: { maximum: 255 },
uniqueness: { case_sensitive: false, scope: :human_id }
validates :post_code, length: { maximum: 25 }
end
そして、次の仕様spec/models/human_spec.rb
it { should have_many(:homes) }
これは失敗します:
Failure/Error: it { should have_many(:homes) }
Expected Human to have a has_many association called homes (homes should have :validate => )
# ./spec/models/human_spec.rb:53:in `block (3 levels) in <top (required)>'
私はこれをここまで追跡しました:
https://github.com/thoughtbot/shoulda-matchers/blob/master/lib/shoulda/matchers/active_record/association_matcher.rb (Line 263)
これは、validate: true には特定の validate: コールバックが必要であり、validates メソッドが十分でない/受け入れられないことを示唆しているようです。has_many アソシエーションに validates コールバックを実行するが、 :validate => を必要としないように指示するにはどうすればよいですか?