/ / Rails to_json łącznie z powiązaniem z limitem - ruby-on-rails, ruby-on-rails-4, skojarzenia, to-json

Rails to_json w tym powiązanie z limitem - ruby-on-rails, ruby-on-rails-4, asocjacje, to-json

Renderuję jeden rekord ze skojarzeniem takim jak poniżej

render :json => Scheme.where("id=?", params[:id]).first
.to_json(:include => { :navs => { :only => [:schemeCode,:navDate,:navValue] }})

Wspomnienia

Scheme has_many   navs
Nav    belongs_to scheme

Muszę zrenderować tylko ostatni rekord w Nav, alepowyżej wydrukuje wszystkie nawigacje od jednego do wielu. Próbowałem: limit => 1 i zamawianie go w opisie, ale samo ograniczenie nie działa. Każda pomoc będzie mile widziana.

render :json => Scheme.where("id=?", params[:id]).first
.to_json(:include => { :navs => { :only => [:schemeCode,:navDate,:navValue], :limit => 1 }})

Odpowiedzi:

0 dla odpowiedzi № 1
  1. Jeśli tworzysz skomplikowany format Json, spróbuj gem "jbuilder" wprowadzone w RailsCast pozostawić strukturę do oglądania.

    W Twoim show.json.jbuilder zobacz, zrób coś takiego:

    @scheme = Scheme.find(params[:id]) json.scheme @scheme.as_json json.extract! @scheme.navs.last, :schemeCode, :navDate, :navValue

    co wyrenderuje dane w formacie json, a także utrzyma kontroler w czystości i porządku.

  2. Sposób użycia Scheme.where("id=?", params[:id]).first w kodzie można skrócić jako Scheme.find(params[:id]) Jeżeli twój id jest unikalny.