我不确定这是Mongoid或标准Rails验证器的问题,但是无效的文档仍然保存到数据库中.
我的模型设置为:
class League
include Mongoid::Document
has_many :teams
validate do
if teams.size > 12
errors.add(:teams, 'too many teams')
end
end
end
class Team
include Mongoid::Document
belongs_to :league
end
Run Code Online (Sandbox Code Playgroud)
我希望以下测试能够通过,但事实并非如此.而不是我的自定义验证防止超过12个团队被添加到联盟,无论如何联盟得到了13个队的保存.
# Factory for a League.
FactoryGirl.define do
factory :league do
name "Test League"
factory :league_with_teams do
ignore do
teams_count 5
end
after(:create) do |league, evaluator|
FactoryGirl.create_list(:team,
evaluator.teams_count,
league: league)
end
end
end
describe League do
it "should not allow more than 12 teams" do
league = FactoryGirl.create(:league_with_teams, teams_count: 12)
league.teams << …Run Code Online (Sandbox Code Playgroud)