Ruby on Railsでデータベース作成:初心者が困っている問題

このQ&Aのポイント
  • Ruby on Railsのバージョン1.1.2を使い、MySQLでデータベースを作成しようとしていますが、表示されないフィールドがあります。
  • 001_create_table.rbの修正やdatabase.ymlの設定を行い、マイグレーションやscaffoldを実行しても、typeというフィールドが表示されません。
  • 何度も試してみましたが解決策が見つかりません。どのように修正すればよいでしょうか?お手数ですが、ご教示いただけますと幸いです。
回答を見る
  • ベストアンサー

Ruby on Rails によるデータベース作成

Rubyもよくわからない初心者ですが、「かんたんRuby on RailsでWebアプリケーション開発」という本を見ながらデータベースを作成しています。Railsのバージョンは1.1.2、データベース管理はMySQLを使っています。 マイグレーションの作成まではうまく行っていると思うのですが、001_create_table.rbの修正、database.ymlの設定を行い、マイグレーション、scaffoldを実行してブラウザで表示すると、表示されないフィールドがあります。 001_create_table.rbでは次の部分を追加しています。 create_table(:items) do |table| table.column :index, :string, :limit => 32 table.column :pos, :string, :limit => 8 table.column :cid, :string, :limit => 32 table.column :type, :string, :limit => 5 table.column :flq, :integer table.column :ns, :string, :limit => 6 table.column :cflg, :integer table.column :wflg, :integer end 何回かやり直してみましたが、↑この中のtypeというフィールドがどうしても表示されません。 どこを直したらいいのか教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • id357
  • ベストアンサー率29% (39/133)
回答No.1

この類の話は微妙なので・・ Type が 基本登録文字 だったらまずいかもしれません。 Type1 とか DataType とかに変更して 試してみられたらどうでしょう。

param08
質問者

お礼

typeをdatatypeに直したらうまく行きました。 本を見ながら何度試してもうまく行かず、困っていました。 素早い回答ありがとうございまいした。

関連するQ&A

  • Ruby on Railsでデータベースに接続できない。

    Ruby on Railsでデータベースに接続できない。 『RailsによるアジャイルWebアプリケーション開発(第3版)』 http://www.amazon.co.jp/Rails%E3%81%AB%E3%82%88%E3%82%8B%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%ABWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA-Sam-Ruby/dp/4274067858/ref=sr_1_1?ie=UTF8&s=books&qid=1279209371&sr=8-1 という本でRuby on Railsの勉強をしています。現在、「第10章チェックアウト」の136ページあたりで行き詰っています。 ActiveRecord::AssociationTypeMismatch in StoreController#save_orderのメッセージが表示されていますが、どうやらデータベースに接続できていないようです。 configのdatabase.yml等を色々試行錯誤してみたり、色々ググってみたりしましたが、解決できませんでした。 どうやったらデータベースに接続できるのでしょうか。恐らくInstantRails-2.0に予め入っているMySQLやApacheと別々に入れたMySQLやApacheと競合しているからでしょうか。InstantRails-2.0の入っているMySQLやApacheは停止しています。 また、別々に入れたMySQLの方にはマイグレーション(?)で問題なくデータベースやテーブルが作成されています。なのにデータベースに接続できていないようです。 もう一つ、Ruby on Railsについて文字コードはcontrollers,helpers,models,views等に入っているファイルは全てutf-8にしなければならないでしょうか。何かWindowsでRuby on railsを開発するとコマンドプロンプトの関係でShift-JISに依存しているような気がします。

    • ベストアンサー
    • Ruby
  • ruby on railsのscaffoldで配列を定義するには

    ruby on railsのscaffoldで配列を定義するには rails2.3での質問です。 通常、scaffoldで >ruby script/generate migration TestData name:string id:integer のようにデータ構造を指定すると思うのですが、この時に配列を定義するには どうしたら良いのでしょうか? 通常の(C言語のような)配列でもハッシュでも構いません。 よろしくお願いいたします。

    • ベストアンサー
    • Ruby
  • ruby on railsについてなのですが、scaffoldで入力フ

    ruby on railsについてなのですが、scaffoldで入力フォーム、一覧表示、詳細表示を作成しました。 そこで、一覧表示の際、テーブルのカラムに存在しない番号を一番左に表示させたいと考えています。3件存在すれば、上から1,2,3とういようにです。テーブルのIDを表示するとIDの1を削除した場合、2,3,4となってしまうので、3件あれば、必ず、1,2,3としたいのです。 環境は以下のとおりです。 ruby1.8.6 rails 2.3.5 db:mysql gems:1.3.5 よろしくお願いします。

  • Ruby on Rails について

    Ruby on Railsでアプリケーションを作ります。 バージョンは:InstantRails-2.0-win 1、データベース表の作成: データベース名:myapp   テーブル名:peoples データベースを作成したら、MySQLを再起動します。 2、新規アプリケーションの作成: アプリケーション名:myapp Instant RailsウィンドウのIボタン⇒Rails Applications⇒Manage Rails Applicationsをクリックします。 Rails ApplicationsダイアログボックスのCreate New Rails App・・をクリックします。 コマンドプロンプト画面が表示されます。 rails myapp を入力します。 コマンドプロンプトのプロンプトが入力状態になって、コマンドプロンプトを閉じます。 Rails ApplicationsダイアログボックスのRefresh Listボタンをクリックしたら、myappアプリケーション名が追加されます。 3、アプリケーション・モデルの作成: InstantRails-2.0-winフォルダ ⇒ rails_apps ⇒ myapp ⇒ config ⇒ datebase.yml ファイルを開きます。 ↓に書き換えます。 development: adapter: mysql database: myapp timeout: 5000 username: root host: localhost   Instant RailsウィンドウのIボタン ⇒ Rails Applications ⇒ Open Ruby Console Windowをクリックします。 コマンドプロンプトが開きます。 cd myapp ruby script/generate model people を入力します。 4、コントローラの作成: コマンドプロンプトを開きます。 cd myapp ruby script/generate controller people を入力します。 コマンドプロンプトを閉じます。 InstantRails-2.0-winフォルダ ⇒ rails_apps ⇒ myapp ⇒ app ⇒ controllers ⇒ people_controller.rb ファイルを開きます。 class PeopleController<Application Controller scaffold :people ←←追加した行です。 end 5、新しいアプリケーションを起動 Rails ApplicationsダイアログボックスのRails Applications 欄の myappの所をチェックし、Start with Mongrelボタンをクリックします。 コマンドプロンプト画面が起動し、ポート番号が表示されます。 Webブラウザを起動し、アドレス欄に 一つは: 「http://localhost:people/list」を入力し、Enterキーを押します。 ↓Errorメッセージが表示されました。 NoMethodError in PeopleController#list undefined method `scaffold' for PeopleController:Class RAILS_ROOT: C:/taiyo/INSTAN~1.0-W/rails_apps/myapp   一つは: http://localhost:3000/people Enterキーを押します。 ↓Errorメッセージが表示されました。 NoMethodError in PeopleController#index undefined method `scaffold' for PeopleController:Class RAILS_ROOT: C:/taiyo/INSTAN~1.0-W/rails_apps/myapp どこの手順が違ってるのが解らなくて、 Errorの解決方法ですごく困ってます。 どうかご指導をお願いいたします。 もう一つはErrorメッセージの3行目は C:/taiyo/INSTAN~1.0-W/rails_apps/myappですけど、 InstantRails-2.0-winフォルダのはずですけど、 INSTAN~1.0-Wフォルダになった原因がよくわからないです。 すごく困ってます。 ご指導お願いいたします。

  • Ruby on Railsで入力フォームを作成しています。

    Ruby on Railsで入力フォームを作成しています。 そこで、入力されたid(table.id)と商品名カラム(table.product_id) を結合して商品ID(table.product_number)を 登録時に商品IDカラムに登録できないかと思っています。 商品名カラムは商品テーブルから読み込んでいます。 恐らく、callbackのしくみを利用すればできるのではないかと 思っているのですが、やり方がわかりません。 以上、よろしくお願いします。 環境は以下のとおりです。 ruby1.8.6 rails 2.3.5 db:mysql gems:1.3.5

  • Ruby on Railsについて

    Ruby on RailsでWebアプリケーションを作成します。 下記の順でやりました。 1、データベース表を作成。 2、新規アプリケーションの作成。 3、作成したアプリケーションがどのデータベースを使うのかを教える。 4、モデルの作成。 5、コントローラの作成。 6、新しいアプリケーションを起動。 ここでコマンドプロンプト画面内に表示されるポート番号を確認し、 Webブラウザを起動し、 アドレス欄に[http://localhost:ポート番号/アドレスブック/アドレスブックのリスト] を記入しました。 エラーが表示されました。 NoMethodError in PeopleController#list undefined method `scaffold' for PeopleController:Class

  • ruby on rails チュートリアル

    チュートリアルの3章を勉強中なのですが(http://railstutorial.jp/chapters/static_pages?version=4.2#sec-generated_static_pages) リスト3-4で $ rails generate controller StaticPages home help このコマンドをしてから$ rails server -b $IP -p $PORTを入力すると => Booting WEBrick => Rails 4.2.4 application starting in development on http://0.0.0.0:8080 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server [2015-11-11 09:39:15] INFO WEBrick 1.3.1 [2015-11-11 09:39:15] INFO ruby 2.2.1 (2015-02-26) [x86_64-linux] Exiting /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:206:in `bind': Address already in use - bind(2) for 0.0.0.0:8080 (Errno::EADDRINUSE) from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:206:in `listen' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:461:in `block in tcp_server_sockets' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:232:in `each' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:232:in `foreach' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/socket.rb:459:in `tcp_server_sockets' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/utils.rb:70:in `create_listeners' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:133:in `listen' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/server.rb:114:in `initialize' from /usr/local/rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:45:in `initialize' from /usr/local/rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/handler/webrick.rb:31:in `new' from /usr/local/rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/handler/webrick.rb:31:in `run' from /usr/local/rvm/gems/ruby-2.2.1/gems/rack-1.6.4/lib/rack/server.rb:286:in `start' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/server.rb:80:in `start' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:80:in `block in server' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `tap' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `server' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!' from /usr/local/rvm/gems/ruby-2.2.1/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>' from /home/ubuntu/workspace/sample_app/bin/rails:8:in `require' from /home/ubuntu/workspace/sample_app/bin/rails:8:in `<top (required)>' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `load' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client/rails.rb:27:in `call' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/client.rb:26:in `run' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/bin/spring:48:in `<top (required)>' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load' from /usr/local/rvm/gems/ruby-2.2.1/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>' from /home/ubuntu/workspace/sample_app/bin/spring:13:in `require' from /home/ubuntu/workspace/sample_app/bin/spring:13:in `<top (required)>' from bin/rails:3:in `load' from bin/rails:3:in `<main>' となってしまいますがこれってエラーですよね? ビューも開けないのですが、どなたか教えていただきたいです もしかしたら上のコマンド関係ないのかもしれないです。 よろしくお願いします。

    • ベストアンサー
    • Ruby
  • ruby on railsにおけるモデルの関連付け

    ruby on rails のアソシエーションについて。 ruby on railsにおける、リレーショナルデータベースの作成についての質問です。 現在、 name,yomi,commentのカラムを持つnamesテーブル name1,name2,groupname,commentのカラムを持つgroupsテーブルをscaffoldにて作成しております。 この2つのテーブルを関連付けをしたいと考えています。 具体的には、 name1とname2を、それぞれnamesテーブルの中のnameを参照して使用したいと考えています。 各モデルのプログラムは以下のようになっています。 name.rb class Name < ActiveRecord::Base has_many :group attr_accessible :name :yomi :comment end group.rb class Group < ActiveRecord::Base attr_accessible :name1, :name2, :groupname, :comment end おそらく、groupテーブルに、name_idというカラムを追加し、nameテーブルにはhas_many :groups を追加する。といった形で良いかと考えていましたが、うまくいきません。 どのような形で実装すればよいか教えていただけないでしょうか。 また、もう1点、現在groupテーブルをweb上から登録する機能を作っています。 仕様としては、入力したname1,name2がすべてnamesテーブルのnameに含まれていれば、 name1,name2,groupname,commentすべてを登録、 いずれかあるいは両方が含まれていなければ、nameの登録画面へリンク、 となります。 現在実装中のプログラムのコントローラー部分(一部)は以下のようになります。 def create tag = params[:tag] @groups = Group.new もし、name1 name2 がnam2に含まれているならば、 @groups.name1 = tag[0] @groups.name2 = tag[1] @groups.groupname = tag[2] @groups.comment = tag[3] そうでなければ、 redirect_to name 登録画面 このような形で考えています。 こちらも、どのように実装すればよいか教えていただけないでしょうか? railsのバーションは3.1です。

  • Ruby on Rails4 外部キーの渡し方

    Rails4の初心者です。 例えば、生徒の情報の一覧ページから[評価する]というリンクを押して生徒の成績をつける時、どのようにすれば生徒を一意に識別する情報を評価ページ(newアクション?)に受け渡してevaluationテーブルに登録(insert)できるでしょうか。 <画面イメージ>(students.index):scaffoldによって生成されたindexアクション 生徒名 年 組 番号 [評価する] 生徒名 年 組 番号 [評価する] 生徒名 年 組 番号 [評価する]     ・・・ <各モデル>(id, 更新日時などのデフォルトのカラムは省略) studentsモデル name:string, nen:integer, kumi:integer, num:integer evaluationモデル shusseki:integer, test:integer, taido:integer, student_id:integer データを渡すということは、formで情報をpostするのかと考えたのですがどうも実装方法が思いつきません。 よろしくお願いいたします。

  • Ruby on RailsとMySQLについて質問です。

    Ruby on RailsとMySQLについて質問です。 Railsの別プロジェクトで作成したデータベースへアクセスするには、どうしたらよいでしょうか? 例)Aプロジェクト、Bプロジェクトがあります。 Bプロジェクト:Aプロジェクトのデータベースへアクセスし、Aテーブルのデータを取得したい。かつ、Bプロジェクトで作成したデータベースへもアクセス可能であること。 知っている方がいましたら、ぜひご教示願います。

専門家に質問してみよう