Rails - 与STI和AC的活跃记录关联。 Rails_Admin中的has_many_through

时间:2015-11-28 19:03:15

标签: ruby-on-rails activerecord relationship has-many-through

我无法为我正在处理的应用程序建模数据。相关模型是Jobs,Team,Shift,&雇员。我把所有事情都正常工作,直到我不得不将司机和助手分成白天司机,日助手,自定义司机和&定制助手。 基本上,我需要一些关于关系及其设置的建议和指导,因为它已经开始让我已经设置的具有单表继承的多个表混淆。 基本上,我需要Job有一个由TeamDayShifts组成的CustomShifts,并且能够将Employees分配给这些不同类型的Shifts 1}}。我使用RailsAdmin来管理管理员,但我想如果能够让模型关系正确,我可以解决这个问题。理想情况下,在Team管理员编辑屏幕上,我可以选择Shift,然后为所选班次的司机和助手设置一个rails_admin多选框。因此,如果我选择DayShift,我会获得Day DriversDay Helpers的多重选择。

我觉得我错过了一些东西,或者这是完全错误的,我没有承诺进行以下任何设置。我还需要知道如何设置团队以获得day_shift,night_shift或other_shift。建立模型关系的任何帮助都将非常赞赏。

class Employee < AR::Base
  belongs_to :team
  belongs_to :shift
end

class Driver < Employee
end

class Helper < Employee
end

class Job < AR::Base
  belongs_to :team
  has_many :employees, through: shifts
  has_many :drivers, through: shifts
  has_many :helpers, through: shifts
end

class Team < AR::Base
  has_many :jobs
  has_many :employees
  has_many :drivers
  has_many :helpers
  has_one :day_shift
  has_one :custom_shift
end

class Shift < AR::Base
  belongs_to :team
  has_many :employees
  has_many :drivers
  has_many :helpers
end

class DayShift < Shift
end

class CustomShift < Shift
end

以下是相关架构:

Employee
  t.string   "name"
  t.string   "type"
  t.integer  "team_id"
  t.integer  "shift_id"

Team
  t.string   "name"
  t.string   "type"

Job
  t.integer "team_id"

Shift
  t.string  "type"
  t.integer "team_id"

0 个答案:

没有答案