4 つの 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 を実行して「テスト」します。たとえば、彼らが通常行うことは、新しい価値を創造しようとすることです。ただし、次の2つの方法のいずれかを使用してそうする場合:
c = Info.new
c = info.new
次のエラーが表示されます。
NameError: uninitialized constant Info / NameError: undefined local variable or method 'info' for main:Object
コードが間違っているか、別のステップが含まれている可能性がありますが、私はこれらのチュートリアルと同じパターンに従っています.その理由。
たとえば (間違っていたら訂正してください)、新しいアプリケーションを構築するとき、Rails Generated Model Info を最初に実行する必要がありますか? または、後で他のエラーが発生します。また、データベースを 2 番目に構築する必要があります (データベースを参照するすべてのアプリケーションは、データベースを参照するためにデータベースが必要になるため、そうなると思います) - ここでは、migrate フォルダーに構築したデータベースが正しくないと仮定しますが、それらの値を呼び出していない何か他のものはありますか?
最後に、検証に関連するエラーを受け取るために、この例で「空白」の値を作成しようとしました (明らかに、新しい値には必要な値がありません)。new を正しい値 (この場合は最小で存在) で初期化しようとしても、これらのエラーは発生しません (ただし、c = Info.new と c = info.new を試してみると違います)。