hej
mam taki problem
mam takie coś
@exps = Exp.where(:user => 1, :id => params[:id])
to mi zwraca dane (array) którego potem przerabiam na json
i moje pytanie
mam też model Image i tam chciałbym pobrać inne dane (poprać wszystkie gdzie :parent => params[:id])
i te nową tablice wstawić do wyniku @exps pod kluczem np. images
mam nadzieję, że opisane jasno
czyli wynikiem było by
{“id”:2,“title”:“test”,“created_at”:“2014-01-19T12:38:27.199Z”,“updated_at”:“2014-01-20T21:16:19.689Z”,“user”:1,“images”:TU ARRAY TEN Z IMAGES}
A wszystko z modelu
Image.where(:parent => params[:id])
konole
January 20, 2014, 10:00pm
2
Ale o co chodzi? Images są jakoś powiązane z exp? Jeśli to jest relacja has_many, to zajrzyj tutaj: http://apidock.com/rails/ActiveRecord/Serialization/to_json
Jeśli nie, to podaj więcej szczegółów, bo
Nie, nie jest jasno.
Wiesz co powiązane.
Miałem
has_many :image, :dependent => :destroy, :primary_key=>:id, :foreign_key=>:parent
Ale coś nie działało już teraz jest ok
na szybko chciałem coś innego wykombinować.
konole
January 20, 2014, 10:11pm
4
:primary_key=>:id,
wat?
Jeżeli nie jest to relacja polimorficzna, to images powinny mieć kolumnę exp_id i kod w klasie Exp (swoją drogą słaba nazwa, raczej Experience) powinien wyglądać tak:
class Exp
has_many :images, dependent: :destroy
end
Koniec, a w kontrolerze:
@exp = Exp.includes(:images).where(user: 1, id: params[:id])
render json: @exp.include(:images)
Swoją drogą - znowu, czemu user oznaczony jest jako integer?
mam tak
def experience
@exp = Exp.includes(:images).where(user: 1, id: params[:id])
render json: @exp.include(:images)
end
i błąd
wrong argument type Symbol (expected Module)
“Czemu integer” a co ?
konole
January 20, 2014, 10:30pm
6
Dlatego, że nazwa zdecydowanie wskazuje na obiekt typu User. Jakich railsów i ruby’ego używasz…? Gdzieś twój kod można podejrzeć?
Kalaf
January 20, 2014, 10:30pm
7
Z jakiej wersji ruby korzystasz?
Rails 4.0.2
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin12.0]
nie można podglądać
> @exps = Exp.find(params[:id])
> @exps.to_json(:include => :images)
> render json: @exps
to wyżej też nie działa. Pobiera dane z Exp ale nie dołącza już z Images
Kalaf
January 20, 2014, 10:59pm
9
Odpal konsolę, spróbuj coś w stylu:
Exp.first.to_json(:include => :images)
i zobacz co się stanie. Jak Ci się wywali, to raczej znaczy, że masz coś nie tak w asocjacjach dalej, w takim przypadku wklej kawałek schema.rb i asocjacje z modeli.
Tak po za temat widzę czy rails dużo się zmieniło w porównaniu do 3.2 i ruby 1.9.2 bo na tych wersjach ostatnio działałem,