Множественные отношения «один ко многим» с использованием одних и тех же 2 таблиц в ruby ​​on rails?

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

Как мне определить это отношение в моих моделях Rails?


person middric    schedule 13.01.2010    source источник


Ответы (1)


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.

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

person molf    schedule 13.01.2010
comment
Я пробую это решение в своей собственной проблеме, и я не могу заставить его работать. Не могли бы вы помочь мне здесь? stackoverflow.com/questions/5554590/ - person bruno077; 06.04.2011