1

私は次の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 => を必要としないように指示するにはどうすればよいですか?

4

0 に答える 0