#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'