「Rails4技術者認定ブロンズ試験」対応の模擬試験問題です。株式会社Dive into Codeの野呂浩良が出題します。
問題1~4
問題1
app/modelsディレクトリ内にActiveRecord::Baseクラスを継承したクラスファイルを自動生成することができるコマンドは、次のうちどれか。正しいものを1つだけ選びなさい。
- 1.rails g controller
- 2.rails g migration
- 3.rails new
- 4.rails g scaffold
解答・解説
ActiveRecord::Baseクラスを継承したクラスファイルは、モデルのことです。モデルはrails g modelコマンド、あるいはrails g scaffoldコマンドを実行すると自動生成されます。
〔正解:4〕
問題2
マイグレーションファイル内に記述してマイグレーションを行うと「created_at」「updated_at」のカラムを自動生成することができるコードは以下のうちどれか。正しいものを1つだけ選びなさい。
- 1.t.timestamps null: false
- 2.t.timestamp null: false
- 3.t.datetimes null: false
- 4.t.date null: false
- 5.t.times null: false
解答・解説
t.timestampsが正しい記述です。
2.と4.は、何もカラムを生成しません。
3.と5.は、StandardErrorが発生します。
〔正解:1〕
問題3
rails g scaffold Blog title:string content:text
のコマンドを実行した。
これにより生成されるマイグレーションファイルに記述されるコードは、次のうちどれか。正しいものを1つだけ選びなさい。
- 
        1. class CreateBlogs < ActiveRecord::Migration def change create_table :blogs do |t| t.string :title t.text :content t.timestamps null: false end end end
- 
        2. class CreateBlogs < ActiveRecord::Migration def change create_table :blogs do |t| t.string title t.text content t.timestamps null: false end end end
- 
        3. class CreateBlogs < ActiveRecord::Migration def create_table :blogs t.string :title t.text :content t.timestamps null: false end end
- 
        4. class CreateBlogs < ActiveRecord::Migration def change create_table :blogs do |t| t.title :string t.content :text t.timestamps null: false end end end
解答・解説
2.は、titleとcontentがシンボル(:titleや:content)として記載されていません。
3.は、メソッド名がchangeではなくcreate_tableになっています。
4.は、t.title :stringやt.content :textのようにカラム名とデータ型の記載位置が逆になっています。
〔正解:1〕
問題4
Railsアプリケーション内で利用するデータベースの設定情報を管理しているファイルとそのファイルが格納されているディレクトリは次のうち、どれか。正しい組み合わせを一つだけ選びなさい。
- 1.config/database.xml
- 2.config/db/database.rb
- 3.config/database.yaml
- 4.config/db/database.yml
- 5.config/database.yml
解答・解説
データベースの設定情報を管理しているファイルはdatabase.ymlファイルです。格納されているディレクトリは、configディレクトリ内です。configディレクトリ内にdbというディレクトリは存在しません。
〔正解:5〕

 
              
               
              
               
              
               
              
               
              
               
                  
                   
                  
                 
                  
                 
                  
                 
                                            
                                         
                                            
                                         
                                            
                                         
                                            
                                         
                                            
                                         
                                            
                                         
                    