foreign_key

Witam

Wygenerowalem dwa:

ruby script\generate scaffold Employee name:string
ruby script\generate scaffold Hw name:string user:references owner:references

modele
Employee
has_many :hws

Hw
belongs_to :employee

jak dodam do modelu Hw :foreign_key => ‘user_id’

To po dodaniu Hw(name => ‘costam’, user_id => ‘1’, owner_id => ‘2’) - rozny user i owner,
tO i tak w pokazuje zawsze usera i ownera tego samoge, bo zlacza te tabele biorac za kazdym razem user_id => 1

Jak zrobic aby do laczenia hw i employee raz bylo brane user_id a potem owner_id?

Pozdrawiam

Po co Ci user_id i owner_id, jak masz tylko modele Employee i Hw? Chyba, że o czyms zapomniałeś wspomnieć?

Moglem nazwac user_id jako employee_id i by bylo OK, bo mam relacje employye . Ale wlasciciel sprzetu i uzytkownik to moga byc dwie rozne osoby ktore sa pracownikiem i dlatego taka konstrukcja.

Gdyby byl tylko user_id albo owenr id to bym dal w modelu hw

belongs_to :employee, :foreign_key => ‘user_id’ albo
belongs_to :employee, :foreign_key => ‘owner_id’

i by bylo OK.

A ja potrzebuje oba te pola

Możesz zrobić tak:

belongs_to :owner, :class_name => ‘Employee’
belongs_to :user, :class_name => ‘Employee’

[quote=gmiklaszewski]Możesz zrobić tak:

belongs_to :owner, :class_name => ‘Employee’
belongs_to :user, :class_name => ‘Employee’[/quote]
Cos nie dziala.
Co oznacza w tym zapisie :owner, :user ?
Bo u mnie owner_id i user_id to nazwy pol w tabeli.

Pozdrawiam

Ciężko mi powiedzieć dlaczego nie działa, ponieważ nie wiem jak tego używasz i jaki jest błąd. Asocjacja nie musi posiadać nazwy modelu, możesz określić dowolną. Poczytaj o asocjacjach np. tutaj albo tutaj.

Ok, juz sie wyjasnilo , dzieki wielkie.

Do tego co podales dodalem klucze:

belongs_to :user, :foreign_key => ‘user_id’, :class_name => ‘Employee’
belongs_to :owner, :foreign_key => ‘owner_id’, :class_name => ‘Employee’

I dzial jak trzeba.
Jeszcze raz dzięki.
Pozdrawiam