質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.32%

  • Ruby on Rails

    7686questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

【Rails】図書管理のアプリにて、このようなエラーメッセージがでてきます。SQLite3::SQLException: no such column: kanryo: SELECT "tosyos

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 148

mockn

score 2

 前提・実現したいこと

https://www.program777.com

こちらのサイトを参考に、nameを本のタイトル、syosaiを著者、kanryoを読了にするだけの簡単な変更のみして、図書管理のアプリケーションを作っています。

一度、タスク管理のアプリケーションは作っているのですが、以下のエラーコードがどう編集したらいいのかわかりません。

 発生している問題・エラーメッセージ

SQLite3::SQLException: no such column: kanryo: SELECT  "tosyos".* FROM "tosyos" ORDER BY kanryo asc, kigen asc LIMIT ? OFFSET ?

 該当のソースコード

<h2>一覧画面</h2>
<%= link_to "全て表示", tosyos_path %>
<%= link_to "完了のみ", tosyos_path + "?kanryo=true", style:"margin-left:5px;" %>
<%= link_to "未完了のみ", tosyos_path + "?kanryo=false", style:"margin-left:5px;" %>
<%= link_to "タスクを登録", new_tosyo_path, class:"pull-right" %>
<table class="table table-bordered">
  <thead>
  <tr>
    <th class="grid-th-width1 pc-only">No</th>
    <th class="grid-th-width2">図書</th>
    <th class="grid-th-width3">期限</th>
    <th class="grid-th-width4">ステータス</th>
    <th class="grid-th-width5">編集</th>
  </tr>
  </thead>
  <tbody>
  <% @tosyos.each do |tosyo| %>
      <tr style="height:48px;">
        <td class="pc-only"><%= @grid_no.to_s %></td>
        <td style="vertical-align: middle"><%= tosyo.name %></td>
        <td style="vertical-align: middle"><%= kigen_format(tosyo.kigen) %></td>
        <td style="vertical-align: middle"><%= kanryo_tag(tosyo) %></td>
        <td class="henshu-cell">
          <%= link_to "照会", tosyo_path(tosyo) %>
         <%= link_to "編集", edit_tosyo_path(tosyo) %>
         <%= link_to "削除", tosyo_path(tosyo), method:"delete" %>
        </td>
      </tr>
      <% @grid_no = @grid_no + 1 %>
  <% end %>
  <tbody>
  </table>
<div style="text-align: center">
  <%= will_paginate @tosyos,
                    renderer: BootstrapPagination::Rails,
                    previous_label: "前へ",
                    next_label: "次へ",
                    inner_window: 1,
                    outer_window: 0,
                    class:"pagination-sm"
  %>
</div>
【models/concerns/tosyo.rb】
class Tosyo < ApplicationRecord
  #期限のアクセサー(画面入力用)
  attr_accessor :kigen_str

  #kanryo(文字列)の値がある場合、絞り込みを行う
  scope :by_kanryo, ->(kanryo){
    if kanryo.present?
      #bool型の変数
      kanryo_bool = true
      if kanryo == "true"
        kanryo_bool = true
      else
        kanryo_bool = false
      end
      where('kanryo = ?', kanryo_bool)
    end
  }
  validate :check_name
  validate :check_shosai
  validate :check_kigen_str

  private

  #nameのバリデーション
  def check_name
    if !name.present?
      errors.add("図書","を入力してください")
    elsif name.length > 20
      errors.add("図書","は20文字以内で入力してください")
    end
  end

  #shosaiのバリデーション
  def check_shosai
    if shosai.present? && shosai.length > 100
      errors.add("著者","は100文字以内で入力してください")
    end
  end

  #kigen_strのバリデーション
  def check_kigen_str
    if kigen_str.present? && !is_yyyymmdd?(kigen_str)
      errors.add("期限","のフォーマットが不正です")
    end
  end

  #文字列がyyyyMMdd型であるか
  def is_yyyymmdd?(yyyymmdd)
    if !yyyymmdd.present?
      return false
    end
    if yyyymmdd.length != 8
      return false
    end
    if !(yyyymmdd =~ /^[0-9]+$/)
      return false
    end

    result = true
    begin
      yyyy = yyyymmdd[0..3].to_i
      mm = yyyymmdd[4..5].to_i
      dd = yyyymmdd[6..7].to_i
      Date.new(yyyy,mm,dd)
    rescue
      result = false
    end
    result
  end

end
【migrate/2018~…_create_tosyos.rb】
class CreateTosyos < ActiveRecord::Migration[5.1]
  def change
    create_table :tosyos do |t|
      t.string :name
      t.string :shosai
      t.datetime :kigen
      t.boolean :kanryo
      t.timestamps
    end
  end
end

 試したこと

ひとまず、Task、Tasks、task、tasks、@task、@tasksの部分をtosyo、tosyosといったように変更しています。

 補足情報(FW/ツールのバージョンなど)

おそらく Ruby on Rails の最新のものが使えているかと思います。

Sqlite3を使っているのですが、itermでは動かすことは難しいのでしょうか?
現在、sqlite3には接続?できているのですが、それ以降の作業ができていません…。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • space-hippy

    2018/05/19 18:49

    https://qiita.com/knife0125/items/bb095a85d1a5d3c8f706 このページにわかりやすくまとめてあります!(^^)

    キャンセル

  • mockn

    2018/05/19 19:01

    ありがとうございます!

    キャンセル

  • mockn

    2018/05/19 19:59

    おそらく、Mac?rails?に入っている、sqlite3を使っているのですが、上記の通りにやってみてもテーブルの方にアクセスできません。

    キャンセル

回答 2

+2

... no such column: kanryo ...

エラーメッセージの意味をまずは、理解してみることです。

"kanryo 列が無いよ" といっています。 
kanryo のスペルはあっているか?
検索対象のテーブルはあっているか?
プログラムが発行をしている SQL 文は、自分が意図したものになっているか?
sqlite のクライアントプログラムから、その SQL を実行したら、動作するか?
まどを確認していってみてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

以下のコマンドをsqliteやmysqlのコンソールで動かせましたか?
SELECT  "tosyos".* FROM "tosyos" ORDER BY kanryo asc, kigen asc LIMIT ? OFFSET ?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • Ruby on Rails

    7686questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • トップ
  • Ruby on Railsに関する質問
  • 【Rails】図書管理のアプリにて、このようなエラーメッセージがでてきます。SQLite3::SQLException: no such column: kanryo: SELECT "tosyos