如何将这些模型与轨道相关联?

时间:2014-06-12 10:09:41

标签: ruby-on-rails

基本上我有4个型号, 用户 - >项目 - >资产 - > TODOOS

我要做的是让它在用户页面上我可以查看所有需要完成的任务(所有todoos),然后在项目页面上我只能查看与该项目相关的任务在资产页面上,我希望能够查看仅与该资产相关联的所有任务。我该怎么做?目前,我的ToDoos专栏是:

标识 名称 用户身份 时间

以下是我的模特

#models/user
class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  has_many :projects
  has_many :assets, through: :projects
  has_many :notes, through: :assets
  has_many :todoos
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
end

项目

#models/project
class Project < ActiveRecord::Base
   belongs_to :user
   has_many :assets, dependent: :destroy
   accepts_nested_attributes_for :assets
   self.inheritance_column = nil
end

资产

class Asset < ActiveRecord::Base
    belongs_to :project
    self.inheritance_column = nil
end

Todoos

class Todoo < ActiveRecord::Base
    belongs_to :user
end

Essentially this is what i want to be able to call on each page
User - current_user.todoos
Project - current_user.projects.todoos (or just project.todoos)
Asset - asset.todoos

**更新** 对于我的要求有些困惑。基本上每个待办事项都可以与资产,项目或用户相关联。但是,如果todo是在资产级别创建的,那么该todo将在项目和用户级别都可见,与在项目级别创建的todo相同,它也将在用户级别可见。从本质上讲,它首先与之相关的模型,在这个层次结构中所有其他模型都可以看到它

用户

|

项目

|

资产

0 个答案:

没有答案