1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQL文を使って特定のレコードを表示する

Posted at

アプリ実装を通して発見したことを自分の備忘録として書いていく記事。

今回詰まったこと

###テーブルの中の特定のカラムが空のものだけ表示したい
一覧に特定のカラムがからのものだけを表示したいと思い、まずはSQL 文でそのレコードを取るためと記述をググる。すると

SELECT * FROM テーブル名 WHERE カラム名 IS NULL;

を発見!確認したところこの記述で狙ったレコードは取得できている様子。

がしかし、これをアプリ実装に使うことができない

今の場合タスクが一覧にズラーっと並んでいる状態。これを tasksテーブルのPointカラムが空なタスクだけを表示するにはどうしたらいいか。まずはindexを確認しにいく


 <% if user_signed_in? %>
    <%= @tasks.each do |task| %>
       <%= link_to edit_task_path(task.id) do %>
           <div class="task" >
           <span class='task-btn'><%= task.content %></span>
           </div>
       <% end%>   
     <% end %>
 <% end %>  

これは一覧にズラーっと並べる記述。この@tasksはコントローラーで定義しているのでコントローラーを見にいく

def index
      if user_signed_in?
      @tasks = Task.all
      end
  end

この@taskの中に代入する記述を変える必要があると思い2時間くらい悩む。結論

def index 
      if user_signed_in? 
      @tasks = current_user.tasks.where(point: nil)
      end
  end

の記述で画面上にPointが空のレコードを表示することができた。
前に違う件でuser.tasks.where(条件)でtasksテーブルから条件を指定して表示するやり方を教えてもらったことがあるのでそこからヒントを得ることによって解決できた

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?