在完成了四个 RoR 教程之后,我更加困惑,因为他们从来没有解释为什么事情会以某种方式编码,以及为什么没有为什么,我所学的只是如何——我认为这不是一个好的编码器。今天早上我决定构建一个允许用户输入信用卡信息的小应用程序——信用卡号、信用卡代码和文本框中的地址(这部分我还没有完成)。根据教程,他们倾向于从数据库端开始。到目前为止我的步骤:
步骤 1. 创建应用程序。
Step 2. 执行“rails generate model info”
步骤 3. 在 db\migrate 文件夹中,这创建了一个格式为 timestamp_create_infos 的文件。我在文件中输入了如下代码:
class CreateInfos < ActiveRecord::Migration
def change
create_table :infos do |t|
t.integer :ccnumber
t.integer :cccode
t.text :address
t.timestamps
end
end
end
根据各种文章,这应该使用我上面列出的值及其在 sqllite 中的各种类型构建一个表。我认为类比,所以我认为在 SQLServer 中创建一个数据库(如果这个假设是错误的,请纠正我):
CREATE TABLE info (
ccnumber BIGINT,
cccode INT,
address VARCHAR(50)
)
第 4 步:在 app\models 文件夹中,我编辑了文件“info.rb”,如下所示:
class Info < ActiveRecord::Base
validates :ccnumber, :presence => true, :length => {minimum:16}
validates :cccode, :presence => true, :length => {minimum:3}
validates :address, :presence => true
end
此时,大多数教程(通常构建博客或 Twitter 克隆)将通过执行 IRB 来“测试”事物。例如,他们通常会尝试创造一个新的价值。但是,当我使用以下两种方法之一这样做时:
c = Info.new
c = info.new
我收到此错误:
NameError: uninitialized constant Info / NameError: undefined local variable or method 'info' for main:Object
也许代码是错误的,或者涉及到另一个步骤,但我遵循与这些教程相同的模式 - 这就是为什么我在完成其中几个之后,我试图自己构建一些新的东西,因为他们的方法缺乏为什么。
例如(如果我错了,请纠正我),在构建新应用程序时,是否应该先运行 rails 生成模型信息?或者,这会在以后产生其他错误。此外,如果数据库是第二个构建的(我假设是这样,因为任何引用数据库的应用程序都需要一个数据库才能引用它) - 我在这里假设我在 migrate 文件夹中构建的数据库不正确,但是还有什么不是调用这些值的吗?
最后,我尝试在此示例中创建一个“空白”值以接收与验证相关的错误(显然,新的缺少值,它将需要)。即使我尝试使用正确的值(在这种情况下为最小值和存在)初始化一个新的,它仍然是这些错误(尽管如果我尝试 c = Info.new 与 c = info.new 它们会有所不同)。