Ruby on rails NameError:未初始化的常量用户::屏幕\u名称\u范围
因此,根据Railsspace教程,我假设使用控制台来理解活动记录。所以我做了我应该做的事情,这就是我得到的结果 有人知道问题出在哪里吗Ruby on rails NameError:未初始化的常量用户::屏幕\u名称\u范围,ruby-on-rails,Ruby On Rails,因此,根据Railsspace教程,我假设使用控制台来理解活动记录。所以我做了我应该做的事情,这就是我得到的结果 有人知道问题出在哪里吗 $ rails console 输出 Loading development environment (Rails 3.0.10) ruby-1.9.2-p290 :001 > user = User.new(:screen_name => "me", ruby-1.9.2-p290 :002 > :email => "
$ rails console
输出
Loading development environment (Rails 3.0.10)
ruby-1.9.2-p290 :001 > user = User.new(:screen_name => "me",
ruby-1.9.2-p290 :002 > :email => "",
ruby-1.9.2-p290 :003 > :password => "a",)
NameError: uninitialized constant User::SCREEN_NAME_RANGE
from /Users/dennisbuizert/Sites/gpoff/app/models/user.rb:3:in `<class:User>'
from /Users/dennisbuizert/Sites/gpoff/app/models/user.rb:1:in `<top (required)>'
from (irb):1
from /Users/dennisbuizert/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:44:in `start'
from /Users/dennisbuizert/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:8:in `start'
from /Users/dennisbuizert/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
加载开发环境(Rails 3.0.10)
ruby-1.9.2-p290:001>user=user.new(:screen\u name=>“我”,
ruby-1.9.2-p290:002>:email=>“”,
ruby-1.9.2-p290:003>:密码=>“a”,)
NameError:未初始化的常量用户::屏幕\u名称\u范围
from/Users/dennisbuizert/Sites/gpoff/app/models/user.rb:3:in`'
from/Users/dennisbuizert/Sites/gpoff/app/models/user.rb:1:in`'
来自(irb):1
from/Users/dennisbuizert/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:44:in'start'
from/Users/dennisbuizert/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands/console.rb:8:in'start'
来自/Users/dennisbuizert/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.0.10/lib/rails/commands.rb:23:in`'
来自脚本/rails:6:in'require'
来自脚本/rails:6:in`'
用户模型
class User < ActiveRecord::Base
validates_uniqueness_of :screen_name, :email
validates_length_of :screen_name, :within => SCREEN_NAME_RANGE
validates_length_of :password, :within => PASSWORD_RANGE
validates_length_of :email, :maximum => EMAIL_MAX_LENGTH
validates_presence_of :email
# Max & Min length for all fields
SCREEN_NAME_MIN_LENGTH = 3
SCREEN_NAME_MAX_LENGTH = 20
PASSWORD_MIN_LENGTH = 8
PASSWORD_MAX_LENGTH = 26
EMAIL_MAX_LENGTH = 50
SCREEN_NAME_RANGE = SCREEN_NAME_MIN_LENGHT..SCREEN_NAME_MAX_LENGTH
PASSWORD_RANGE = PASSWORD_MIN_LENGHT..PASSWORD_MAX_LENGTH
end
class用户screen\u name\u范围
验证密码的长度,在=>密码范围内
验证以下内容的长度:email,:MAX=>email\u MAX\u length
验证是否存在:电子邮件
#所有字段的最大和最小长度
屏幕名称最小长度=3
屏幕名称最大长度=20
密码\最小\长度=8
密码\最大\长度=26
电子邮件最大长度=50
屏幕名称范围=屏幕名称最小长度..屏幕名称最大长度
密码\u范围=密码\u最小长度..密码\u最大长度
结束
我使用的是SQLite3而不是MySQL,因为我不知道如何用MySQL替换SQLite3以及如何使其工作。要使sqlite工作,请确保您的
Gemfile
中有行gem SQLite3
,运行bundle install
,并使config/database.yml
中的部分如下所示:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
class User < ActiveRecord::Base
# Max & Min length for all fields
SCREEN_NAME_MIN_LENGTH = 3
SCREEN_NAME_MAX_LENGTH = 20
PASSWORD_MIN_LENGTH = 8
PASSWORD_MAX_LENGTH = 26
EMAIL_MAX_LENGTH = 50
SCREEN_NAME_RANGE = SCREEN_NAME_MIN_LENGHT..SCREEN_NAME_MAX_LENGTH
PASSWORD_RANGE = PASSWORD_MIN_LENGHT..PASSWORD_MAX_LENGTH
validates_uniqueness_of :screen_name, :email
validates_length_of :screen_name, :within => SCREEN_NAME_RANGE
validates_length_of :password, :within => PASSWORD_RANGE
validates_length_of :email, :maximum => EMAIL_MAX_LENGTH
validates_presence_of :email
end
至于SCREEN\u NAME\u RANGE错误,如果没有看到您的代码(假设上面的配置更改无法修复它),我就无法判断这是从哪里来的。如果您完全确定您的文件与教程中显示的完全相同,我会联系作者,因为它是一个非免费文档集
你可能想退房。它们有很大的警告说它们是不完整的,但在大多数情况下它们都写得很好(并且由社区的公开积极贡献成员编写),而且是免费的。要让sqlite工作,请确保在
Gemfile
中有行gemsqlite3
,运行bundle install
,并使config/database.yml
中的部分如下所示:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
class User < ActiveRecord::Base
# Max & Min length for all fields
SCREEN_NAME_MIN_LENGTH = 3
SCREEN_NAME_MAX_LENGTH = 20
PASSWORD_MIN_LENGTH = 8
PASSWORD_MAX_LENGTH = 26
EMAIL_MAX_LENGTH = 50
SCREEN_NAME_RANGE = SCREEN_NAME_MIN_LENGHT..SCREEN_NAME_MAX_LENGTH
PASSWORD_RANGE = PASSWORD_MIN_LENGHT..PASSWORD_MAX_LENGTH
validates_uniqueness_of :screen_name, :email
validates_length_of :screen_name, :within => SCREEN_NAME_RANGE
validates_length_of :password, :within => PASSWORD_RANGE
validates_length_of :email, :maximum => EMAIL_MAX_LENGTH
validates_presence_of :email
end
至于SCREEN\u NAME\u RANGE错误,如果没有看到您的代码(假设上面的配置更改无法修复它),我就无法判断这是从哪里来的。如果您完全确定您的文件与教程中显示的完全相同,我会联系作者,因为它是一个非免费文档集
你可能想退房。它们有很大的警告说它们是不完整的,但在大多数情况下它们都写得很好(并且是由社区中公开积极贡献的成员编写的),而且是免费的。我知道错误来自何方。您必须在验证之前声明常量。加载类时,验证中引用的常量尚未声明,因此出现错误 您的代码应该如下所示:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
class User < ActiveRecord::Base
# Max & Min length for all fields
SCREEN_NAME_MIN_LENGTH = 3
SCREEN_NAME_MAX_LENGTH = 20
PASSWORD_MIN_LENGTH = 8
PASSWORD_MAX_LENGTH = 26
EMAIL_MAX_LENGTH = 50
SCREEN_NAME_RANGE = SCREEN_NAME_MIN_LENGHT..SCREEN_NAME_MAX_LENGTH
PASSWORD_RANGE = PASSWORD_MIN_LENGHT..PASSWORD_MAX_LENGTH
validates_uniqueness_of :screen_name, :email
validates_length_of :screen_name, :within => SCREEN_NAME_RANGE
validates_length_of :password, :within => PASSWORD_RANGE
validates_length_of :email, :maximum => EMAIL_MAX_LENGTH
validates_presence_of :email
end
class用户screen\u name\u范围
验证密码的长度,在=>密码范围内
验证以下内容的长度:email,:MAX=>email\u MAX\u length
验证是否存在:电子邮件
结束
我知道错误是从哪里来的。您必须在验证之前声明常量。加载类时,验证中引用的常量尚未声明,因此出现错误
您的代码应该如下所示:
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
class User < ActiveRecord::Base
# Max & Min length for all fields
SCREEN_NAME_MIN_LENGTH = 3
SCREEN_NAME_MAX_LENGTH = 20
PASSWORD_MIN_LENGTH = 8
PASSWORD_MAX_LENGTH = 26
EMAIL_MAX_LENGTH = 50
SCREEN_NAME_RANGE = SCREEN_NAME_MIN_LENGHT..SCREEN_NAME_MAX_LENGTH
PASSWORD_RANGE = PASSWORD_MIN_LENGHT..PASSWORD_MAX_LENGTH
validates_uniqueness_of :screen_name, :email
validates_length_of :screen_name, :within => SCREEN_NAME_RANGE
validates_length_of :password, :within => PASSWORD_RANGE
validates_length_of :email, :maximum => EMAIL_MAX_LENGTH
validates_presence_of :email
end
class用户screen\u name\u范围
验证密码的长度,在=>密码范围内
验证以下内容的长度:email,:MAX=>email\u MAX\u length
验证是否存在:电子邮件
结束
在运行自动测试时编辑模型文件时会出现此问题
因此,只需停止自动测试,然后再次启动它(如果需要)在运行自动测试时编辑模型文件时会出现此问题
因此,只要停止自动测试,然后再次启动它(如果您愿意)当您想使用MySQL时,不要因为不知道如何使用它而使用SQLite3。有些人(包括我自己)很乐意帮助你。至于您的问题,您能发布一点您的用户模型代码吗?当您想使用MySQL时,不要因为不知道如何使用它而使用SQLite3。有些人(包括我自己)很乐意帮助你。至于你的问题,你能发一封信吗