Pobrania danych z 2 tabel i połączenie w 1 array

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])

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ć.

 :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 ?

Dlatego, że nazwa zdecydowanie wskazuje na obiekt typu User. Jakich railsów i ruby’ego używasz…? Gdzieś twój kod można podejrzeć?

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ć :frowning:

> 		@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

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.

To działa dzięki!

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,