Множественные отношения один-ко-многим с использованием одних и тех же двух таблиц в Ruby on Rails?

StackOverflow https://stackoverflow.com/questions/2056211

Вопрос

У меня есть база данных с двумя таблицами;Пользователи и версии.Ревизии имеют несколько связей «один-ко-многим» с таблицей пользователей, например «create_by», «verified_by», «published_by» (каждое поле представляет собой идентификатор пользователя внешнего ключа).

Как бы я определил эту взаимосвязь в своих моделях Rails?

Это было полезно?

Решение

class Revision < ActiveRecord::Base
  belongs_to :creator, :foreign_key => "created_by", :class_name => "User"
  belongs_to :verifier, :foreign_key => "verified_by", :class_name => "User"
  belongs_to :publisher, :foreign_key => "published_by", :class_name => "User"
end

class User < ActiveRecord::Base
  has_many :creations, :foreign_key => "created_by", :class_name => "Revision"
  has_many :verifications, :foreign_key => "verified_by",
    :class_name => "Revision"
  has_many :publications, :foreign_key => "published_by",
    :class_name => "Revision"
end

Использование этих моделей:

User.first.creations    #=> [#<Revision>, #<Revision>, ...]
Revision.first.creator  #=>  #<User>
# ...etc., for verifier/verifications and publisher/publications.

Вероятно, вам следует изменить имена ассоциаций на те, которые имеют смысл в вашем приложении.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top