アプリ実装を通して発見したことを自分の備忘録として書いていく記事。
今回詰まったこと
###テーブルの中の特定のカラムが空のものだけ表示したい
一覧に特定のカラムがからのものだけを表示したいと思い、まずは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テーブルから条件を指定して表示するやり方を教えてもらったことがあるのでそこからヒントを得ることによって解決できた