0

Rails 4.2.4)您好,初学者在这里。我正在开发一个不需要数据库或activeRecord的项目。因此,在创建我的Rails项目时,我添加了-O(以禁用活动记录和数据库)(rails new MyApp -O)使用非ActiveRecord模式,无法通过导轨控制台访问它

我读到要做一个没有数据库支持的模型,您可以创建一个文件

app/models/site.rb。

不需要做:

轨生成模型站点

所以我说我的模型,它看起来是这样的:

class Site 

attr_reader :name 
attr_reader :out_average 
attr_reader :in_average 
attr_reader :change 

def initialize(name, in_average, out_average) 
    @name  = name 
    @out_average = out_average 
    @in_average = in_average 
    @change  = find_increase 
end 

def find_increase() 
    if @in_average && @out_average != 0 
     @change = ((@in_average - @out_average)/@out_average)*100 
    else 
     @change = 0 
    end 

    return @change 

end 
end 

于是,我便开始了控制台“轨道Ç “并且当我尝试调用新的Site对象时,出现错误:

irb(main):001:0> Site.new

NameError: uninitialized constant Site 
from (irb):1 
from /home/ms-87/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.4/lib/rails/commands/console.rb:110:in `start' 
from /home/ms-87/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.4/lib/rails/commands/console.rb:9:in `start' 
from /home/ms-87/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:68:in `console' 
from /home/ms-87/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
from /home/ms-87/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>' 
from /home/ms-87/Documents/projects/rails_projects/site_seasonality/bin/rails:8:in `<top (required)>' 
from /home/ms-87/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
from /home/ms-87/.rbenv/versions/2.2.3/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' 
from -e:1:in `<main>' 

我确定我从我的应用程序的根目录开始了控制台。我也确保使用适当的命名约定(site.rb是app/model /中的文件名,“Site”是我的类在文件中的名称)。任何人都可以帮助我,为什么这不起作用?我的思想错了吗?谢谢。

+1

这绝对应该工作!我做了同样的事情,它运行良好。我的猜测是你有一个错字。当你在Rails控制台中运行时会发生什么? 'require_relative“./app/models/site.rb”' –

+0

我检查了你的代码,它对我很好,用'Site.new(“foo”,2,3)'返回新的对象。你是否在其他文件中做过任何其他更改(其他文件中的语法错误可能导致该错误)?如果你从控制台运行'load'app/models/site.rb'',会发生什么? – basiam

+0

啊,该死,我刚刚意识到我的错误。我的第一个错误是我的文件名被大写为“Site.rb”,在我发布之前我已经修复了这个问题。但是在我修好之后,我意外地开始使用“irb”而不是“rails c”。 DOH! 谢谢你们,对不起。 –

回答

0

我的第一个错误是我的文件名是大写的“Site.rb”,我实际上在我发布之前修复了这个。但是在我修好之后,我意外地开始使用“irb”而不是“rails c”。 DOH!对这篇文章感到抱歉。