我使用Rails4,并在app / models中创建了一个子文件夹,但是我不为什么,rails无法在该子文件夹下加载文件。
这是我的BasicForm在app/models/common/basic_form.rb
目录中:
class Common::BasicForm < ActiveRecord::Base
def name=(value)
super(value.downcase!)
end
def phone=(value)
super(value.blank? ? nil : value.gsub(/[^\w\s]/, ''))
end
end
这里是BasicForm的子类:
class Event < Common::BasicForm
validates :name, presence: true
validates :description, presence: true
validates :city, presence: true
validates :address, presence: true
validates :event_start, presence: true
validates :event_end, presence: true
validates :phone, presence: true, length: { maximum: 20, too_long: "%{count} characters are allowed"}
end
在config/application.rb
我添加这一config.autoload_paths += [ config.root.join('app') ]
行:
module MyApp
class Application < Rails::Application
config.autoload_paths += [ config.root.join('app') ]
end
end
我重新启动了服务器,但是仍然出现此错误:
Unable to autoload constant Common::BasicForm, expected /vagrant/MyApp/app/models/common/basic_form.rb to define it
这是不正确的,因为linux中的nano可以打开basic_form.rb:
vagrant@rails-server-dev:/vagrant/MyApp$ nano /vagrant/MyApp/app/models/common/basic_form.rb
然后纳米罐打开basic_form.rb
文件
我已经用谷歌搜索了这个问题,或者是关于命名空间模型的,但是我还没有找到更多的信息……我想念什么?缺少哪一步?
如果我将basic_form.rb移至app / models,并删除“ Common”名称空间,则该应用程序会很好。
您尚未定义模块名称空间Common
,因此它尚不存在。尝试这个:
module Common
class BasicForm < ActiveRecord::Base
# class code ...
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句