【问题标题】:Two has_many :through associations with same models and RailsAdmin两个 has_many :通过与相同模型和 RailsAdmin 的关联
【发布时间】:2017-07-11 14:10:17
【问题描述】:

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

RailsAdmin 中的 ActiveRecord::AssociationNotFoundError
在 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

事件组织者

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

事件成员

belongs_to :user, foreign_key: :member_id
belongs_to :event

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我把它改成 has_many :ogranized_event, through: :event_organizers, source: :event` 现在还有另一个错误:在 EventOrganizer 上找不到名为“事件”的关联
    【解决方案2】:

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

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

    必须是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-05
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多