W poprzednim temacie poruszałem sprawe dziedziczenia i tabel http://forum.rubyonrails.pl/viewtopic.php?id=491
Qertoip zasugerował pare rzeczy i dzieki jego nieocenionej pomocy poradziłem sobie z tym, ale pojawił sie jak to zwykle bywa u początkującego nowy problem
Chodzi o to zeby odwzorować powiązania gdzie typ IdentityDocument udostepnia interfejs :identificable (mniejsza o to czy to po angielsku gramatyczne:P) typom IdentityCard, Passport, DriveLicense itp.
Jeśli dobrze zrozumiałem idee tego to sprawa musi wygladac tak:
class IdentityDocument < ActiveRecord::Base
belongs_to :identificable, :polymolrphic => true
end
i np. przykladowa klasa ktora korzysta z identificable…
class DriveLicense < ActiveRecord::Base
has_one :identity_document, :as => :identificable
end
i migracje …
[code]class CreateIdentityDocuments < ActiveRecord::Migration
def self.up
create_table :identity_documents do |t|
t.column :identificable_id, :integer
t.column :identificable_type, :string, limit => 20
end
end
def self.down
drop_table :identity_documents
end
end[/code]
[code]class CreateDriveLicenses < ActiveRecord::Migration
def self.up
create_table :drive_licenses do |t|
t.column :serial_no_dl, :string, :limit => 20
end
end
def self.down
drop_table :drive_licenses
end
end[/code]
No i w zwiazku z tym pojawia się kilka pytań
- Czy to jest prawidłowo zrealizowane
- Czy ActiveRecord sam zadba o odpowiednie wstwienie kluczy obcych (zrealizowane w sql) w tabeli Identity_documents na podstawie nazw pol (_id - _type), czy trzeba dopisac jakies osobne metody? Wybaczcie jesli to glupie pytanie ale sie ucze.
Pozdrawiam i dzieki za odpowiedz