У меня есть приложение Ruby on Rails, над которым я работаю над API для связанного приложения iPhone.
Я переписал метод to_json
моей модели Item, чтобы получить некоторую пользовательскую информацию из запроса API, которая понадобится мне в приложении iPhone.
Однако, когда я использую встроенный метод rails to_json и включаю свою модель Item в качестве связанного параметра, мой метод Item#to_json
не вызывается, а вызывается просто to_json по умолчанию для объекта AR.
См. Следующий код (@api_user is a User model object
)
render :json => @api_user.to_json( :include => { :friends => { :include => :items, :except => :api_token } } )
Я включаю ассоциацию friends
, которая в свою очередь включает ассоциацию items
, но вызывается элемент по умолчанию to_json
для Item, а не мой пользовательский to_json.
Чего мне не хватает?
Вот мой Item#to_json
метод
def to_json(options={})
{
:id => self.id,
:name => name,
:description => description,
:url => url,
:quantity => quantity,
:price_range_raw => price_range,
:price_range => human_readable_price_range( price_range ),
:can_be_purchased => can_be_purchased?,
:completely_purchased => completely_purchased?,
:remaining_qty => remaining_quantity,
:thumb_photo_url => photo.url(:thumb),
:small_photo_url => photo.url(:small),
:large_photo_url => photo.url(:large),
:priority_raw => priority,
:priority => human_readable_priority( priority )
}.to_json
конец
Никакие другие модели не имеют переопределенного метода #to_json