В rails, как создать самоассоциацию для строк с повторяющимися значениями для столбца?

#ruby-on-rails

#ruby-on-rails

Вопрос:

У меня есть таблица persons , в которой есть email столбец. Модель Person должна иметь ассоциацию, называемую duplicates такой, которая Person.first.duplicates возвращала бы все persons с тем же электронным письмом.

Этот код работает:

 has_many :duplicates, class_name: 'Person', primary_key: 'email', foreign_key: 'email'
 

и возвращает «себя» (первого человека, о котором идет речь). Я мог бы использовать лямбда-выражение для фильтрации этого, чтобы оно возвращало только «другие» дубликаты.

Ответ №1:

вы можете установить ассоциацию следующим образом

 has_many :duplicates, :class_name => 'Person', :foreign_key => 'email'
 

Комментарии:

1. Просто попробовал это. Это не возвращает дубликаты.

Ответ №2:

 has_many :duplicates, -> (object) {
           where("id != ?", object.id)
         }, 
         class_name: 'Person', 
         primary_key: 'email', 
         foreign_key: 'email'