两个has_many:通过与相同模型和RailsAdmin的关联

时间:2017-07-11 14:10:18

标签: ruby-on-rails activerecord rails-admin

我有两个模型EventUser以及两个:through关联模型 - event_memberevent_organizer。我创建了一些关联,并且在常规使用中它可以工作,但在事件和事件管理器页面的rails管理员中我有一个错误:

  

RailsAdmin中的ActiveRecord :: AssociationNotFoundError
  协会名为' event'在EventOrganizer上找不到

当我更改关联时,我开始得到其他RailsAdmin错误

schema.rb:

#event_members
 t.bigint "member_id"
 t.bigint "event_id"
#event_organizers
 t.bigint "organizer_id"
 t.bigint "organized_event_id"

在模型中我有下一个代码:

事件

has_many :event_members
has_many :members, through: :event_members, source: :user

has_many :event_organizers
has_many :organizer, through: :event_organizers, source: :user

用户

has_many :event_members, foreign_key: :member_id
has_many :events, through: :event_members

has_many :event_organizers, foreign_key: :organizer_id
has_many :events, through: :event_organizers, source: :user

EventOrganizer

belongs_to :user, foreign_key: :organizer_id
belongs_to :event, foreign_key: :organized_event_id

EventMember

belongs_to :user, foreign_key: :member_id
belongs_to :event

2 个答案:

答案 0 :(得分:0)

has_many :events中有User的两个定义,应更改其名称以使其唯一且有意义。

答案 1 :(得分:0)

这是错误范围的虚拟问题,它是:

has_many :ogranized_event, through: :event_organizers, source: :event

必须:

 has_many :event_organized, through: :event_organizers, source: :organized_event