使用DataMapper验证Sinatra应用程序中的数据

时间:2014-02-01 22:33:36

标签: ruby sinatra ruby-datamapper

我正在使用Ruby 2.1.0,Sinatra和DataMapper,我想使用DataMapper's Validations,但我遇到了一些困难。

我需要'sinatra-base''dm-core''dm-migrations',我已在课程中加入了DataMapper::Resource。当我尝试这个时:

property :username, Text, :length => 3..15, :unique => true,
  :messages => {
    :length  => "Your username should be between 3 and 15 symbols.",
    :is_unique => "This username is already taken."
  }

我收到以下错误:

/gems/ruby-2.1.0/gems/dm-core-1.2.1/lib/dm-core/property.rb:779:in `assert_valid_options': options :messages are unknown (ArgumentError)

当我删除:messages部分时,它是这样的:

property :username, Text, :length => 3..15, :unique => true

我没有收到错误,但实际上它不起作用 - 我输入了一个带有一个字母的用户名,并且编写并保存没有任何问题:(

我尝试的另一件事是这样做:

property :username, Text
validates_length_of :username, :min => 3,
:message => "The username is too short."

然后我得到:

/gems/dm-core-1.2.1/lib/dm-core/model/relationship.rb:372:in `method_missing': undefined method `validates_length_of' for MyModule::User:Class (NoMethodError)

我建议也许我不包括或要求我应该做的事情,但我不知道:(并且在文档中的示例中没有包含其他内容。

或许Ruby版本和DataMapper版本存在问题:?

或完全不同的东西:(

你能帮我解决这个问题吗?非常感谢你提前! :)

0 个答案:

没有答案