我正在使用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版本存在问题:?
或完全不同的东西:(
你能帮我解决这个问题吗?非常感谢你提前! :)