こんにちは、mahです。
このブログでは、僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、ノウハウなどを書いていきます。
今回は、DBに紐つかない属性(カラム)をモデルに追加する
についてです。
「DBに保存しないでいいけど、属性持たせて処理に使いたい!」
ということがよくあります。
現場でもよくやるので覚えておいて損はないです。
【Rails】DBに紐つかない属性(カラム)をモデルに追加する
やり方
Railsの標準機能である attribute API を使います。
参考リンク
rails/attributes.rb at 5-1-stable · rails/rails · GitHub
Rails5: ActiveRecord標準のattributes APIドキュメント(翻訳)|TechRacho by BPS株式会社
サンプルコード
以下は、Articleモデルに、virtual_tags
という名前で、Array型
の属性を追加する例です。
class Article < ApplicationRecord # Array型の属性を追加 DB保存は不可 attribute :virtual_tags, type: Array end
こうすることで、virtual_tagsという属性
に 配列の値
を保持させることが出来るようになります。
もし、typeを指定しない場合は、設定した値の型で値が設定されます。
下記に、
数値型(Integer)
文字列型(String)
ハッシュ(Hash)
の値を設定する例を載せておきます。
# model class Article < ApplicationRecord # hogeという属性を付与 attribute :hoge end [4] pry(#<ArticlesController>)> a = Article.new => #<Article:0x00007f9d80c41650 # 初期値はnil [5] pry(#<ArticlesController>)> a.hoge => nil [6] pry(#<ArticlesController>)> a.hoge = 123 => 123 # 数値 [7] pry(#<ArticlesController>)> a.hoge.class => Integer [8] pry(#<ArticlesController>)> a.hoge = "String型です" => "String型です" # 文字列 [9] pry(#<ArticlesController>)> a.hoge.class => String [10] pry(#<ArticlesController>)> a.hoge = { hash: 'hash' } => {:hash=>"hash"} [12] pry(#<ArticlesController>)> a.hoge => {:hash=>"hash"} # ハッシュ [13] pry(#<ArticlesController>)> a.hoge.class => Hash
以上が、attribute APIの使い方 です。
使いこなせるようになるとかなり便利なので、ぜひ取り入れてみてください。
RailsやRubyを学びたい人へ
RailsやRubyを学びたい人は、
RailsHack(レイルズハック)という、
最近できた新しいプログラミングスクール(今なら通常価格69,800円が、早期割で29,800円!)か、
Udemy で下記のコースを受講すると良いです★
✅1. フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座
✅2. 【はむ式】ハンズオンで学ぶRuby on Rails 6【Dockerにも触れられる】 <- おすすめ。ハムさんはReactやTypeScriptの教材も非常に丁寧。
✅3. はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう
また、
Udemy は定期的にセールをやっていますし(90%OFFとかもザラ)、
「30日間なら返金できる」ので、
満足できなかった時でも安心です。
【公式】RailsHack(レイルズハック)
【公式】Udemyで学んでみる