【至急】Sinatra でのデータベース接続の問題について
わけあってこのプログラムは本日23時までに完成されければなりません!!
よろしくお願いします!!!!!
こんにちは。
現在 Ruby の勉強がてら、Sinatra というフレームワークを使用して簡単な会員登録型TODOサービスを制作しているのですが、その中でデータベースの接続をしようとすると
「Internal Server Error
undefined method `join' for #String:0x000000...」
というエラーに見舞われてしまいました...
サーバーの再起動など色々と試みてみたのですが、全く解決策が見えないため、質問させていただきます。
以下が各コードになります。もし不足している物があれば補足しますので、よろしくお願いします。
[ マイグレショーンファイル ]
Ruby
1class CreateItems < ActiveRecord::Migration 2 def change 3 create_table :todo do |t| 4 t.integer :userid 5 t.string :title 6 t.string :detail 7 t.datetime :dl 8 t.timestamps null: false 9 end 10 create_table :users do |t| 11 t.string :name 12 t.string :loginid 13 t.string :password 14 t.timestamps null: false 15 end 16 end 17end
※ マイグレーションには成功しており、データベースのテーブル構築には成功しています。
「スキーマ」
Ruby
1ActiveRecord::Schema.define(version: 20150813013659) do 2 3 create_table "todo", force: :cascade do |t| 4 t.integer "userid" 5 t.string "title" 6 t.string "detail" 7 t.datetime "dl" 8 t.datetime "created_at", null: false 9 t.datetime "updated_at", null: false 10 end 11 12 create_table "users", force: :cascade do |t| 13 t.string "loginid" 14 t.string "password" 15 t.datetime "created_at", null: false 16 t.datetime "updated_at", null: false 17 t.string "name" 18 end 19 20end
「app.rb」
(ログイン機能はなんとか実装したので省略します。必要があればご連絡ください。)
Ruby
1require 'bundler/setup' 2Bundler.require 3require 'sinatra/reloader' if development? 4require 'open-uri' 5require "sinatra/json" 6 7require 'date' 8 9require 'sinatra' 10require 'sinatra/activerecord' 11 12require 'sinatra/cookies' 13 14require './models/todo.rb' # 下にコードを 15require './models/users.rb' # 掲載しています 16 17Time.zone = "Tokyo" 18ActiveRecord::Base.default_timezone = :local 19 20class Server < Sinatra::Base 21end 22 23enable :sessions 24set :session_secret, "ランダムな英数字32文字" 25 26# メイン画面 27get '/home' do 28 if session[:user_id] != nil 29 # ログイン成功 30 31 @user = Users.where(:id => session[:user_id]).first 32 33 @todo = Todo.where(:id => session[:user_id]) # ☆おそらくこのコードに問題があります... 34 35 erb :home 36 else 37 redirect '/' # ログイン画面へ 38 end 39 40end
・モデルたち
「./models/user.rb」
Ruby
1ActiveRecord::Base.establish_connection(ENV['DATABASE_URL']||"sqlite3:db/development.db") 2class Users < ActiveRecord::Base 3 validates :loginid, uniqueness: true 4 has_many :todo 5end
「./models/todo.rb」
Ruby
1ActiveRecord::Base.establish_connection(ENV['DATABASE_URL']||"sqlite3:db/development.db") 2class Todo < ActiveRecord::Base 3 belongs_to :users 4end 5
個人的にはTodoモデルが正常に動作していないような気がします...
どなたか解決策をお教えください...
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。