hD

日々の雑記/オタク/絵描き/フリーランスエンジニア/ミニマリスト/ダイエット/英語

【Ruby on Rails】DBには追加したくないが一時的に値を追加して参照する方法

参考:

ruby - テーブルのカラムには存在しない独自に追加したプロパティも to_json で出力したい - スタック・オーバーフロー

 

render :json でmodelメソッドの処理結果をjsonに追加して返したい - 蚊帳の中の日記

 

ruby on rails - AwesomeNestedSet, virtual attribute and JSON output - Stack Overflow

 

やり方1

モデル attr_accessorで追加したい変数定義

attr_accessor :hoge

as_jsonをオーバーライド

def as_json(options = {})
  super.as_json(options).merge(hoge: hoge)
end

定義したメソッドに値をセット

res = dbmodel.all
fuga = res.each do |r|
  r.hoge = r.methodの処理
end

コントローラー

render json: res

これでjsonhogeが追加される

やり方2

モデル attr_accessorで追加したい変数定義

attr_accessor :hoge

定義したメソッドに値をセット

res = dbmodel.all
fuga = res.each do |r|
  r.hoge = r.methodの処理
end

コントローラー

render json: res, methods: [:hoge]

これでjsonhogeが追加される

resはDBの値
メソッド名に処理したメソッド
res.as_json(methods: [:メソッド名])