Niestandardowa relacja w Rails 3

Cześć, chciałbym zrobić niestandardową relację.

Mam tabele: notki, klienci, ekrany, miasta.
Każdy klient ma swoje miasto i każdy ekran ma swoje miasto.

Każda notka zawiera: id miasta klienta oraz id miasta ekranu.

Nie mogę zapiąć tego przez co nie mogę wyciągnąć danych z bazy.

W tabelce notki mam pola: client_city_id, led_city_id
W tabelce miasta mam pola: id, city

Próbowałem z czymś takim

[model NOTKI]: belongs_to :city, :class_name => "city", :foreign_key => "client_city_id"
oraz

[model MIASTA]: has_many :notes, :class_name => "id"
Mówiąc najprościej potrzebuję połączyć te dwie kolumny joinem, ale nie wiem jak, mógłby mi ktoś pomóc?

Dzięki

ale co konkretnie chcesz wyciągnąć z bazy ?

Chcę w miejscu gdzie będę wyświetlał notki, wyświetlić też miasto klienta i miasto ekranu.

Chcę po prostu zrobić tak: note.client_city.city

Jak masz tak zapisane modele to nie pisze się note.client_city.city
tylko poprostu note.city
W Railsach przy łączeniu tabel nie jest ważne w kontorlerze jak nazywa się pole łączące w modelu. Bo join jest robiony dla tabel a nie dla pól.

[quote=wafcio]Jak masz tak zapisane modele to nie pisze się note.client_city.city
tylko poprostu note.city
W Railsach przy łączeniu tabel nie jest ważne w kontorlerze jak nazywa się pole łączące w modelu. Bo join jest robiony dla tabel a nie dla pól.[/quote]
City czego? Klienta czy ekranu?

Dalej nie wiem jak to spiąć.

Hmm, jeśli dobrze Cię zrozumiałem to notka ma klienta i ekran. Zarówno ekran jak i klient mają miasto, więc odwołanie się do miasta z notki może wyglądać tak:

note.client.city
note.led.city
class Note
 belongs_to :client
 belongs_to :led
end

class Led
 belongs_to :city
 has_many :notes
end

class Client
 belongs_to :city
 has_many :notes
end

class City
 has_many :leds
 has_many :clients
end

[quote=kbl]Hmm, jeśli dobrze Cię zrozumiałem to notka ma klienta i ekran. Zarówno ekran jak i klient mają miasto, więc odwołanie się do miasta z notki może wyglądać tak:

note.client.city
note.led.city

[code ruby]
class Note
belongs_to :client
belongs_to :led
end

class Led
belongs_to :city
has_many :notes
end

class Client
belongs_to :city
has_many :notes
end

class City
has_many :leds
has_many :clients
end
[/code][/quote]
Jasne. Fakt, za mało napisałem o problemie. Potrzebuję tych danych w tabelce notes, bo chcę sortować po tej kolumnie, jeżeli się tylko odwołam to nie dam rady sortować danych.

Czyli jeszcze raz: w tabelce NOTES mam client_city_id oraz led_city_id po to abym mógł sortować po tych tabelkach, problem jest ze zbudowaniem relacji i wyciągnięciem danych.

mozesz sortować po danych z innej tabeli, zrób złączenie i posortuj wtedy nie ma problemu. Rayan ma screencast o join i include. Obejrzyj, może się wyjaśni. No możesz też posortować później w ruby, ale po co jak moze to baza juz zrobic

Tylko mi chodzi o sortowanie w locie, no nic, popróbuję.
http://imageshack.us/photo/my-images/684/sortf.jpg

Ech no ale pod tym sortowaniem w locie jest jakieś zapytanie pewnie robione? A jak nie to masz od początku tablicę, i tylko przez js sortujesz. Jest wiele pluginów fajnych do sortowania bardziej skomplikowanego w jQuery.

Tak czy inaczej, nie rozumiem z czym masz problem. Jak zrobisz relacje, wyciagniesz dane, to sortowanie w bazie lub po stronie klienta to żaden problem przecież