代码之家  ›  专栏  ›  技术社区  ›  lobati

为什么我的数据映射器验证不起作用?

  •  0
  • lobati  · 技术社区  · 14 年前

    此示例无法验证是否存在标题:

    require 'rubygems'
    require 'dm-core'
    require 'dm-migrations'
    require 'dm-validations'
    
    db_name = 'rvtest.sqlite'
    
    DataMapper::Logger.new($stdout, :debug)
    DataMapper.setup(:default, 'sqlite://' + Dir.pwd + '/' + db_name)
    
    class Task
      include DataMapper::Resource
      property :id,         Serial
      property :title,      String
    
      validates_presence_of :title
    end
    
    DataMapper.finalize
    DataMapper.auto_upgrade!
    

    require 'rubygems'
    require 'dm-core'
    require 'dm-migrations'
    require 'dm-validations'
    
    db_name = 'rvtest.sqlite'
    
    DataMapper::Logger.new($stdout, :debug)
    DataMapper.setup(:default, 'sqlite://' + Dir.pwd + '/' + db_name)
    
    class Task
      include DataMapper::Resource
      property :id,         Serial
      property :title,      String, :required => true
    
    end
    
    DataMapper.finalize
    DataMapper.auto_upgrade!
    

    为什么这些工作方式不同?如果我进入irb,需要这个文件并键入 Task.new.save! 第一个回来了 true 第二个 false .

    1 回复  |  直到 14 年前
        1
  •  2
  •   solnic    14 年前

    救命啊!不调用任何回调,这意味着它不调用验证。尝试保存