Ruby on Railsでアプリを作ってみよう⑥
それでは実際にデータベースにデータを追加してから取り出してみましょう。
まずコンソール上でrails cコマンドを実行しデータを追加します。
#コンソール
irb(main):001:0> post = Post.new #インスタンス生成
irb(main):002:0> post.comment = "今日はいい天気ですね" #commentカラムにデータ追加
irb(main):003:0> post.save #データ保存
irb(main):007:0> exit
これでデータが生成され保存されました。シークエルプロでみてみましょう。
追加したい時は同様の作業を行います。
ActiveRecordメソッド
モデルがテーブル操作する時に使えるメソッドで
データを取得、作成、保存などができます。
メソッド | 使い方 |
---|---|
all | テーブルのすべてのデータを取得 |
find | テーブルのレコードの内、ある1つのデータを取得 |
new | クラスのインスタンス(レコード)を生成する |
save | クラスのインスタンス(レコード)を保存する |
#コンソール
irb(main):001:0> Post.all #全てのデータ取得
このように全てが出力されます。二番目のレコードだけを取得したいときはどうすればいいのでしょうか。
irb(main):001:0> Post.find(2) #2番目のレコードのデータ取得
このようにして取り出します。
またレコードを変数に代入して変数.カラム名で情報を取り出すこともできます。
irb(main):001:0> Post.find(3) #3番目のレコードのデータ取得
irb(main):002:0> post = Post.find(3) #3番目のレコードのデータ取得し変数postに代入
irb(main):003:0> post.comment #3番目のレコードのコメントカラムに入っている内容出力
それでは実際にコントローラーを使って情報を取得してみましょう。
class PostsController < ApplicationController
def index
@post = Post.find(3) # 3番目のレコードを@postに代入
end
end
インスタンス変数@postにデータを代入したのでビューファイルで取り出したデータを使うことができます
<%= "データベースで取得した値を表示" %>
<%= @post %>
http://localhost:3000/posts/ にアクセスすると
このように表示されます。
複数のデータを一つ一つ表示したいときはどうするのでしょうか?
全てのデータを取得してインスタンス変数に代入します。
class PostsController < ApplicationController
def index
@posts = Post.all # 全てのレコードを@postsに代入(複数あるのでインスタンス変数複数形)
end
end
このままfindメソッドと同じ書き方をしてしまうとエラーが出てしまいます。
全てのデータを一気に表示はできないのです。
こういう時に何を使うのかというと...配列の中の要素を一つ一つ取り出す奴がいましたね。
感の言い方は気づかれたかもしれません。そう!eachメソッドです!(忘れた方は以前の記事をみてください)
<%= "データベースで取得した値を表示" %>
<% @posts.each do |post| %>
<%= post.comment %>
<% end %>
このように全てのデータが取得できます。
以上です。
Author And Source
この問題について(Ruby on Railsでアプリを作ってみよう⑥), 我々は、より多くの情報をここで見つけました https://qiita.com/masakichi_eng/items/8ae7f153b064736918c5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .