FC ConcursosFC Concursos

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:

  1. Auto-relacionamento, ou seja, um objeto pai tem muitos filhos que são da mesma classe Pessoa.
  2. Uso de cache, ou seja, busca no cache resultados já armazenados.
  3. Relacionamento one-to-one, ou seja, um pai deve ter obrigatoriamente apenas um único filho.
  4. Geração de dois modelos (models), o pai e o filho.
  5. 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

Continue aprendendo