モデルでテストしようとしているメソッドがありますが、うまく機能していません。必要なときに false を返していないようです。何か提案はありますか?
class Registration < ActiveRecord::Base
validate :check_duplicate_section
def check_duplicate_section
all_registrations = Registration.all
all_registrations.each do |reg|
puts reg.section_id
if reg.section_id == self.section_id && reg.student_id == self.student_id
errors.add(:registration, "Already exists")
return false
end
return true
end
end
テスト ファイル: (@bruce は前に定義されています)
class RegistrationTest < ActiveSupport::TestCase
should "not allow invalid student registrations" do
@mike = FactoryGirl.create(:student, :first_name => "Mike")
good_reg = FactoryGirl.build(:registration, :section => @section2, :student => @mike)
bad_reg = FactoryGirl.build(:registration, :section => @section1, :student => @bruce)
bad_reg2 = FactoryGirl.build(:registration, :section => @section2, :student => @mike)
assert_equal true, good_reg.valid?
assert_equal false, bad_reg.valid?
assert_equal false, bad_reg2.valid?