在尝试查看我的应用上的页面时,我一直收到“未初始化的常量”错误,这是因为将我的模型捆绑到一个gem并在两个应用之间共享我的数据库..就像模型没有加载?
所以我的应用程序路由到'pages#index,这里是控制器
class PagesController < ApplicationController
def index
@portfolios = Portfolio.all
end
end
美好而简单。所以我得到的错误信息是
uninitialized constant PagesController::Portfolio
我的database.yml文件我已将应用程序指向第二个应用程序开发数据库
database: myblog_development
我在gem中加载我的模型,#blogModels.rb文件
require "blogModels/version"
module BlogModels
Gem.find_files("models/*.rb").each do |f|
filename = File.basename(f, '.*')
class_name_symbol = filename.classify.to_sym
autoload class_name_symbol, "models/#{filename}"
end
end
我的宝石结构
-blogModels
-lib
-blogModels
-version.rb
-models
-portfolio.rb
-sector.rb
-blogModels.rb
我的投资组合模型在我的宝石
中设置如下class Portfolio < ActiveRecord::Base
extend FriendlyId
friendly_id :title, use: :slugged
has_many :portfolio_sectors
has_many :sectors, through: :portfolio_sectors
has_many :images, as: :imageable, :dependent => :destroy
accepts_nested_attributes_for :images
attr_accessible :overview, :title, :url, :sector_ids, :image_id, :images_attributes
#Validations
validates :title, :presence => {:message => 'Add your Title'}
validates :url, :presence => {:message => 'Add a URL'}
validates :overview, :presence => {:message => 'Add an Overview'}
validates :sector_ids, :presence => {:message => 'Choose At Least 1 Sector'}
def previous_post
self.class.first(:conditions => ["title < ?", title], :order => "title desc")
end
def next_post
self.class.first(:conditions => ["title > ?", title], :order => "title asc")
end
end
我不知道怎么调试这个,所以如果有人有任何指示,请告知。我很困惑为什么这不起作用。
答案 0 :(得分:2)
::Portfolio
是否适合您MyGemName::Portfolio
编辑:
由于您在不同项目之间共享模型,因此将模型分组到模块中是有意义的
module MyAwesomeModels
class Portfolio < ActiveRecord::Base
# self.table_name = 'portfolios' # if you face issues accessing the tables, this might help
end
end