0
0

More than 3 years have passed since last update.

Railsで架空のCafeのHPを作ってみよう!【12日目】『特定のデータの取得(active:hashの属性値)』編

Posted at

概要

基本Railsの記法に則り書いていきます!
1から全ての説明ではなく
その中であれ?どうやるの?と
疑問に思った点や実装に困った箇所を
ピックアップして紹介していきます♩

設定と準備

・Rails
・HTML
・CSS
・Javascript(jQuery)

↑上記の言語とフレームワークを使い
架空(自分で考えたテキトーなもの)のCafeの
HPを作っていこうと思います!

12日目の作業内容:round_pushpin:

・ビューの作成(トップページに特定の情報を表示)

12日目の気になった箇所:zap:

特定のデータの取得でカラムごとの取得はできたが
属性まで指定できるのだろうか。

仮説:pushpin:

カラム別に取得する場合は
(testテーブルのoptionカラムだけ取得したい場合とする)

samples_controller.rb
@test_option = Test.select('option')

このような形で取得することができる。
(取得の仕方は複数存在します)

似たような形で属性まで指定できないか試してみる。

Testテーブルのoption_idカラムのname属性だけを
取得したい場合とする。今回はname属性の属性値2を取得したい。
(_idはactive:hashの使用時の記法です)

samples_controller.rb
@test_option = Test.select('option.name.2')

このように記述してみたがうまくいかなかった。

結論:star:

複数やり方があると思いますが今回は私がうまくいった方法を紹介します。

上記と同じ条件で
Testテーブルのoption_idカラムのname属性だけを
取得したい場合とします。今回はname属性の属性値2を取得するとします。

samples_controller.rb
@test_option = Test.where(:option_id name='2')

私の場合このような記述の仕方でうまくいきました。

簡単に説明すると
取得したいテーブル(モデル)に対してwhereメソッドを使います。

samples_controller.rb
@test_option = Test.where

whereメソッドは条件に一致したレコードを配列で取得してくれます。
そして、
whereに取得したい条件を入れていきます。
まずはカラム名です。

samples_controller.rb
@test_option = Test.where(:option_id)

この状態だとoption_idカラムの全てを取得する条件になります。

なので、さらに属性まで絞りたいので、

samples_controller.rb
@test_option = Test.where(:option_id name)

このように続けて記述することでその属性まで条件まで絞ることができます。

同じように続けて、

samples_controller.rb
@test_option = Test.where(:option_id name='2')

と、することで、属性の属性値まで条件を絞ることができました。

0
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
0
0