micheldoumit / tripvise

0 stars 0 forks source link

root: 'recommendations', #37

Closed marciotoze closed 9 years ago

marciotoze commented 9 years ago

root: 'recommendations' o padrão do root já não é esse? acho que não precisa dessa linha...

na teoria quando vc retorna um json de um unico objeto o root vira o nome do objeto.

render json: Recommendation.first # { recommendation: {id: 1, name: ...} }

quando retorna uma collection por json ela retorna com recommendatios como root, não é assim? não tenho ctz, mas tem lógica

render json: Recommendation.all # { recommendations: [{id: 1, name: ...}, {id: 2, name: ...}] }
commit file reference
28cb42fde27efef39e275aa49534aaf05e92474c app/controllers/trips_controller.rb#L32 #36
MarcusSky commented 9 years ago

ops, copypasta copypasta

MarcusSky commented 9 years ago

Acabei de testar, e aparentemente não funciona assim :confused: Eu estou fazendo a seguinte call no ActiveRecord:

Recommendation.where(trip: trip)

E por algum motivo ele está retornando o seguinte JSON (sem o root)

{
  "trips": [ {
         "description": "Aracajul é top!",
                  "id": 266,
            "place_id": 227,
              "rating": "amazing",
      "recommender_id": 13,
             "trip_id": 737,
          "wishlisted": true
    }
  ]
}

Alguma idea, @marciotoze ?

marciotoze commented 9 years ago

lendo a API do Rails (http://apidock.com/rails/ActiveRecord/Serialization/to_json)

  konata = User.find(1)
  ActiveRecord::Base.include_root_in_json = true
  konata.to_json
  # => { "user": {"id": 1, "name": "Konata Izumi", "age": 16, "created_at": "2006/08/01", "awesome": true} }

  ActiveRecord::Base.include_root_in_json = false
  konata.to_json
  # => {"id": 1, "name": "Konata Izumi", "age": 16, "created_at": "2006/08/01", "awesome": true}

o default do rails é ActiveRecord::Base.include_root_in_json = false, por isso voce está tendo que colocar. deve funcionar como eu falei se você setar ActiveRecord::Base.include_root_in_json = true no dir initializers/

veja se voce na maior parte das vezes precisará de root, balanceia qual será o mais comum e escolhe se deixa ativado ou não.

MarcusSky commented 9 years ago

Testei colocando a linha dentro do application.rb, mas não deu certo, ainda é retornado trips como root. Alguma outra sugestão ?