Как упомянул MrDanA, вы можете указать другой ключ Foreign_key, но я бы рекомендовал против этого.Если вы можете, ваша структура БД будет более понятной на низком уровне, если вы будете придерживаться соглашений об именах сущностей.
В будущем сразу станет очевидно, что user_id указывает на пользовательскую таблицу, в то время как новый программист не сможет сказать, что complete_by указывает на пользовательскую таблицу без изучения кода.Если вы хотите иметь конкретное имя или вам нужно более одной ассоциации пользователей, что-то вроде «complete_user_id» остается прозрачным как на уровне приложения, так и на уровне базы данных.
Затем вы можете добавить методы, такие как:
has_one :user
has_one :completed_by, :class_name => "User", :foreign_key => "completed_user_id"
или
has_one :user
def completed_by
self.user.id
end
и т. Д.