Questão FC266150
Seja o código Ruby on Rails abaixo: class Pessoa < ActiveRecord::Base has_many :filhos, class_name: "Pessoa", foreign_key: "pai_id" belongs_to :pai, class_name: "Pessoa" end Temos
Linguagens de Programação
IDECAN · 2019
Seja o código Ruby on Rails abaixo:
class Pessoa < ActiveRecord::Base
has_many :filhos, class_name: "Pessoa",
foreign_key: "pai_id"
belongs_to :pai, class_name: "Pessoa"
end
Temos um exemplo de:
- Auto-relacionamento, ou seja, um objeto pai tem muitos filhos que são da mesma classe Pessoa.
- Uso de cache, ou seja, busca no cache resultados já armazenados.
- Relacionamento one-to-one, ou seja, um pai deve ter obrigatoriamente apenas um único filho.
- Geração de dois modelos (models), o pai e o filho.
- Validador, verificando se um atributo confere com uma determinada expressão regular.
Mostrar resposta e comentário
Gabarito
A
Comentário do professor
Trata‑se de um auto‑relacionamento: a mesma classe referencia registros da própria tabela para modelar relações entre instâncias (pai/filho).
No código, has_many :filhos, class_name: "Pessoa", foreign_key: "pai_id" indica que a associação :filhos aponta para a classe Pessoa (não para uma classe chamada Filho) e que a chave estrangeira no banco é a coluna pai_id.
Semântica: um registro pai pode ter muitos filhos (1:N) e cada filho belongs_to um único pai. No banco isso fica na mesma tabela (por exemplo, pessoas.pai_id referencia pessoas.id).
Na prática você usa pessoa.filhos para obter os descendentes e pessoa.pai para acessar o progenitor; em migrações cria‑se a coluna pai_id (inteiro) e, opcionalmente, a constraint de foreign key.
Conteúdo do catálogo FC Concursos · Atualizado em