小编Mar*_*cus的帖子

Mongoid保存文档,尽管自定义验证无效

我不确定这是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)

ruby validation ruby-on-rails associations mongoid

5
推荐指数
1
解决办法
1036
查看次数

标签 统计

associations ×1

mongoid ×1

ruby ×1

ruby-on-rails ×1

validation ×1