我想要日期验证,所以我添加了date_validator gem。
我只是输入了命令:
gem install date_validator
然后我能够将相关部分添加到我的模型中,一切都按预期工作 - 无效日期被拒绝。
但是,我也尝试将此gem添加到我的Gemfile中,这会产生以下错误:
/var/www/html/redmine-2.6.5/lib/redmine/core_ext/active_record.rb:42:in `<top (required)>': DateValidator is not a class (TypeError)
为什么会这样?我不明白......宝石工作正常 - 从Gemfile中删除宝石会导致一切都完美无缺。那么为什么只将它添加到Gemfile会导致问题?
这是我的Gemfile:
source 'https://rubygems.org'
gem "will_paginate", "3.1.0"
gem "nested_form", "0.3.2"
gem "date_validator", "0.9.0"
gem "rails", "3.2.21"
gem "jquery-rails", "~> 3.1.1"
gem "coderay", "~> 1.1.0"
...
...
答案 0 :(得分:0)
我对redmine并不熟悉,但是这件事发生在你身上。
2.2.0 :022 > module Me
2.2.0 :023?> end
=> nil
2.2.0 :024 > class Me
2.2.0 :025?> end
TypeError: Me is not a class
from (irb):24
date_validator gem具有名称为“DateValidator”https://github.com/codegram/date_validator/blob/master/lib/date_validator.rb
的模块redmine gem的类名为'DateValidator'https://github.com/redmine/redmine/blob/master/lib/redmine/core_ext/active_record.rb
在您的情况下,date_validator gem正确加载并创建模块但redmine无法定义具有相同名称的类。