スリ飯屋Malankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

【Rails】DBに紐つかない属性(カラム)をモデルに追加する

【Rails】DBに紐つかない属性(カラム)をモデルに追加する

こんにちは、mahです。

このブログでは、僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、ノウハウなどを書いていきます。

今回は、DBに紐つかない属性(カラム)をモデルに追加する についてです。

「DBに保存しないでいいけど、属性持たせて処理に使いたい!」

ということがよくあります。

現場でもよくやるので覚えておいて損はないです。

やり方

Railsの標準機能である attribute API を使います。

参考リンク

rails/attributes.rb at 5-1-stable · rails/rails · GitHub

Rails5: ActiveRecord標準のattributes API(翻訳)|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社

サンプルコード

以下は、Articleモデルに、virtual_tags という名前で、Array型 の属性を追加する例です。

class Article < ApplicationRecord
  # Array型の属性を追加 DB保存は不可
  attribute :virtual_tags, type: Array
end

こうすることで、virtual_tagsという属性配列の値 を保持させることが出来るようになります。

もし、typeを指定しない場合は、設定した値のclassで、値が設定されます。

下記に、

  • 数値型(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の使い方 です。

使いこなせるようになるとかなり便利なので、ぜひ取り入れてみてください。


このブログでは、僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、ノウハウなどを書いています。

「フリーエンジニアになりたい!」

という方は、下記の記事で、

  • 【必読】未経験からフリーランスエンジニアになるため必要な5つの行動

  • 実務未経験から1年でフリーランスエンジニアになった話

  • 【完璧!】フリーエンジニアの案件面談対策 〜全20問〜

  • 【脱失敗】フリーエンジニアの案件面談で必要な【5つのマインド】

を紹介していますので、よかったらチェックしてみてください。

全て実体験 です。

www.malanka.tech

www.malanka.tech

www.malanka.tech

www.malanka.tech

最後までお読み頂きありがとうございました★