railsで処理を書いているとき、renderを使用してjsonで処理結果だったりDBのデータを返すことがあると思います。
そんなときに習った小技をメモしておきます。
書き方
処理はcontrollerのindexメソッドとかに書くと思います。
でも小技としてはmodelに処理を書きます。
event.rb
def adjust_json
{
event: {
id: self.id,
user_id: self.user_id,
category_id: self.category_id,
name: self.name,
description: self.description,
is_public: self.is_public,
},
dates:
self.dates.map do |date|
{
id: date.id,
at: date.proposed_at
}
end
}
end
events_controller.rb
def index
render json: event.adjust_json
end
ファットコントローラーとかの概念的にもコントローラーに書く処理は少なくするってのがいいらしい。
今回書いた処理は親テーブルと子テーブルの関係の関係があってそのデータも引っ張ってくる。子テーブルから複数レコードの値を引っ張ってくるのはmapメソッドを使って引っ張ってくる。
参考URL