rails - 关联这些模型的最佳/最有效方法是什么

时间:2011-05-20 19:34:23

标签: ruby-on-rails-3

在我的申请中,我有以下情况:

用户所属组织 组has_many用户

Project belongs_to User 用户has_many项目

以下情况也是如此: - 每个小组将有一个BaseCase - 每个项目将有多个场景和一个BaseCase(取决于项目用户所属的组) - 场景和BaseCase是相同类型的对象(让我们称这个数据) - 每个方案的默认值是组的BaseCase值,但用户可以更改这些默认值以创建特定方案

我不确定如何通过协会有效地捕捉所有这些关系,有没有人有任何想法?感谢

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么

class User 
  belongs_to :group
  has_many   :projects
end 

class Group
  has_many :users
  has_many :projects, :through => :users
  has_one  :base_case
end

class Project
  has_many :scenarios
  has_one  :base_case
  belongs_to :user
  has_one :group, :through => user
  has_one :base_case, :through => :group
end  

class Scenario
  belongs_to :project
  has_one :base_case, :through => :project

  before_create do
    self.attributes = self.base_case.attributes.except(:group_id, ...)
  end
end

class BaseCase
  belongs_to :group
end