私はモデルを持っています
class Store
has_many :opening_times
#returns ActiveRecordRelation
私は次のようなものを呼び出すJSON APIを持っています
Store.first.opening_times.to_json
このメソッドをカスタムにする方法はありますか?
もちろん、「opening_times_to_json」のようなメソッドを作成し、それを json テンプレートで呼び出すことができることは知っていますが、メソッドがさまざまな形式に応答できる Ruby または Rails の優れた方法があるのではないでしょうか?
編集
私はそれが欲しい
そして私は今それをしました:
def opening_times_as_json
#opening_times.map{|o| {o.weekday.to_sym=>"#{o.open} - #{o.close}"}}
{ :monday=>"#{opening_times[0].open} - #{opening_times[0].close}",
:tuesday=>"#{opening_times[1].open} - #{opening_times[1].close}",
:wednesday=>"#{opening_times[2].open} - #{opening_times[2].close}",
:thursday=>"#{opening_times[3].open} - #{opening_times[3].close}",
:friday=>"#{opening_times[4].open} - #{opening_times[4].close}",
:satturday=>"#{opening_times[5].open} - #{opening_times[5].close}",
:sunday=>"#{opening_times[6].open} - #{opening_times[6].close}" }
end
これは私が望む結果です:
それを実現するためのよりエレガントな方法はありますか?
opening_time model has weekday as string, open as integer and close as integer
リクエストのopening_timeモデルとしてEDIT 2
class Advertisement::OpeningTime < ActiveRecord::Base
attr_accessible :weekday, :open, :close
belongs_to :advertisement
end
そして広告
class Advertisement < ActiveRecord::Base
has_many :opening_times
def initialize(*params)super(*params)
if (@new_record)
%w(monday tuesday wednesday thursday firday saturday sunday).each do |weekday|
self.opening_times.build weekday: weekday
end
end
end