У меня есть ситуация, когда у меня есть таблица SQL, которая в значительной степени «родительская» для других.Проще всего представить в приведенном ниже примере, где есть разные типы клиентов (которым необходимо хранить разные поля данных), которые имеют уникальный идентификатор клиента.
CREATE TABLE clients (
id serial NOT NULL,
internal_ref character varying,
address character varying,
telephone_no character varying,
CONSTRAINT pkey_clients PRIMARY KEY (id),
CONSTRAINT uniq_clients_internal_ref UNIQUE (internal_ref)
)
CREATE TABLE partnerships (
id serial NOT NULL,
clients_id integer,
name character varying,
CONSTRAINT pkey_partnerships PRIMARY KEY (id),
CONSTRAINT fkey_partnerships_clients_id FOREIGN KEY (clients_id)
REFERENCES clients(id) MATCH FULL
ON UPDATE NO ACTION
ON DELETE NO ACTION
)
CREATE TABLE individuals (
id serial NOT NULL,
clients_id integer,
forename character varying,
surname character varying,
CONSTRAINT pkey_individuals PRIMARY KEY (id),
CONSTRAINT fkey_individuals_clients_id FOREIGN KEY (clients_id)
REFERENCES clients(id) MATCH FULL
ON UPDATE NO ACTION
ON DELETE NO ACTION
)
Я новичок в ActiveЗапишите и не знаете, как (или если) я могу элегантно реализовать его, чтобы найти компанию и получить данные о присоединенном клиенте.
В настоящее время я пытаюсь:
class Client < ActiveRecord::Base
end
class Partnership < ActiveRecord::Base
has_one :clients
end
output = Partnership.find(:all) # I only have one row in both tables, which is also joinable
p output # => [#<Partnership id: 1, name: "PART1", clients_id: 1>]
Мне нужно output
, чтобы также иметь присоединяемые данные, такие как internal_ref
, address
и т. Д. Как я могу это сделать?