Неопределенный метод `serializable_hash 'для массива - PullRequest
2 голосов
/ 29 июля 2011

Я использую mongoid в качестве своей формы, и я вызываю to_json для набора результатов. Начальная реализация работает отлично, за исключением того факта, что все загружается на лету (в отличие от активной загрузки)

Упрощенная схема и код ниже:

Answer has_many likers 

all_answers=Answer.includes(:likers).all.map{|a| a}
all_answer.to_json(:only=>[:text],:include => {:likers=>{:only=>[:_id,:nickname]}})

Я начал использовать этот великий самоцвет ( mongoid_eager_loading ), и он прекрасно работает. Однако, когда я вызываю to_json в наборе результатов

all_answers=Answer.includes(:user, :question,:likers,:comments).all.map{|a| a}
all_answer.to_json(:only=>[:text],:include => {:likers=>{:only=>[:_id,:nickname]}})

Я получу эту ошибку:

undefined method `serializable_hash' for #<Array:0x00000105b3d020>

Эта ошибка возникает, только когда я пытаюсь включить массив, например: Answer has_many likers.

Я подозреваю, что массивы, содержащиеся в отдельных объектах, не имеют метода serializable_hash.

Как я мог решить эту проблему? Благодарим за любую идею!

1 Ответ

0 голосов
/ 08 августа 2011

Посмотрите на этот пост от Miso Engineering:

http://engineering.gomiso.com/2011/05/16/if-youre-using-to_json-youre-doing-it-wrong/

Драгоценный камень RABL (https://github.com/nesquena/rabl) стоит посмотреть, если вы выставляете свои модели как JSON.

...