帮助在 Rails 中构建模型

2024-03-21

class Profile
  has_many :projects, :through => "teamss"
  has_many :teams, :foreign_key => "member_id"
  has_many :own_projects, :class_name => "Project", :foreign_key => :profile_id
  has_many :own_teams, :through => :own_projects, :source => :teams
end

class Project
  belongs_to :profile, :class_name => "Profile"
  has_many :teams
  has_many :members, :class_name => "Profile", :through => "teams", :foreign_key => "member_id"
end

class Team
  belongs_to :member, :class_name => 'Profile'
  belongs_to :project
end

我需要创建模型Evaluation。我想做的是生成一个链接project#view项目的每个成员(包括所有者)的页面,以便使Evaluation该人将点击该链接并评估与该链接相关的人。业主Project会对所有会员进行评价,所有会员也会对业主进行评价。

我已经定义了模型Evaluation如下,但我想我错过了一些东西:

class Evaluations < ActiveRecord::Base
  belongs_to :evaluated, :class_name => 'Profile', :foreign_key => "evaluated_id"
  belongs_to: :profile, :class_name => 'Profile', :foreign_key => "profile_id"
end

记住这一点Evaluation表将有大量属性,这就是为什么我不打算使用has_many_and_belongs_to_many.

我怎样才能创建这个模型才能做我想做的事情并能够获得我需要的所有签证project#show page?

Thanks!

Edited

所做的更改:

class Profile
  has_many :evaluations, :dependent => :destroy, :foreign_key => :evaluation_id
  has_many :evaluators, :through => :evaluations, :foreign_key => :profile_id
end

class Project
  has_many :evaluations,:foreign_key => "project_id"
end

class Evaluations < ActiveRecord::Base
  belongs_to :evaluated, :class_name => 'Profile', :foreign_key => "evaluated_id"
  belongs_to: :profile, :class_name => 'Profile', :foreign_key => "profile_id"
  belongs_to: :project, :class_name => 'Project', :foreign_key => "project_id"
end

您的团队和个人资料(成员)关联有点混乱。一个团队有很多个配置文件(成员),一个配置文件(成员)属于一个团队。除此之外,你可能只是把事情过于复杂化了。我很好奇为什么您不直接调用配置文件模型成员并让事情变得更简单?

话虽如此,您正在做一组相当复杂的关联。我强烈建议您阅读ActiveRecord 关联文档 http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html密切地了解这些东西是如何工作的,特别是主键和外键是如何自动确定的。

我想下面会给你你想要的。

class Team
  has_and_belongs_to_many :members,
    :class_name => "Profile"
  belongs_to :project
  belongs_to :team_leader,
    :class_name => "Profile"
end

class Profile
  has_and_belongs_to_many :teams
  has_many :projects,
    :through => :teams
  has_many :owned_projects,
    :class_name => "Project",
    :foreign_key => "owner_id"
  has_many :owned_teams,
    :class_name => "Team",
    :foreign_key => "team_leader_id"
  has_many :evaluations
  has_many :evaluations_given,
    :class_name => "Evaluation",
    :foreign_key => "evaluator_id"
end

class Project
  has_many :teams
  belongs_to :owner,
    :class_name => "Profile"
  has_many :members,
    :through => :teams
  has_many :evaluations
end

class Evaluation
  belongs_to :profile
  belongs_to :evaluator,
    :class_name => "Profile",
    :foreign_key => "evaluator_id"
  belongs_to :project
end

支持这些模型定义的是以下表格/键:

evaluation
  id
  profile_id
  evaluator_id
  project_id

teams
  id
  project_id
  team_leader_id

profiles
  id

project
  id
  owner_id

profiles_teams
  profile_id
  team_id

这样,您应该能够访问正确链接所需的集合/对象,例如:

  • 项目成员

    项目拥有者

    项目团队

    团队.项目

    简介.项目

    配置文件.owned_projects

    个人资料.团队

    团队成员

    队长

    项目.评估

    个人资料.评估

    评估.评估者

    profile.evaluations_given

另请注意,您的嵌套资源如果你尝试坚持使用一个RESTFUL框架。读起来吧!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

帮助在 Rails 中构建模型 的相关文章

随机推荐

  • 如何在 Nextjs 9 中运行 cron/计划任务?

    我正在使用 Nextjs 构建一个应用程序 并为我的 api 端点使用 Pages api 目录 服务器条目 根目录对我来说是隐藏的 当我的应用程序部署时 如何立即使用 node cron 运行计划任务 我有同样的问题 您可以做的是使用no
  • Java Web 服务框架

    这是我第一次使用 Web 服务 我必须用 java 开发 Web 服务 它应该具有良好的 WS 标准 应该松散耦合 可扩展 高度安全 快速响应时间 我知道我必须考虑权衡 我检查了一些框架 如 Axis2 CXF Spring WS 请分享您
  • WPF,访问组合框所选项目

    我有一个组合框 有四个静态可能的选择 如下所示 主窗口 xaml
  • 覆盖索引的正确字段顺序 - MySQL

    MySQL 中是否有为表创建覆盖索引的标准顺序 这意味着如果我的查询包含 where 子句 order by 和 select 语句中的字段 那么我将以什么顺序将字段添加到索引中以正确创建覆盖索引 覆盖索引采用逗号分隔列表中的列列表 从左侧
  • Flutter:在方向更改期间,当小部件树被锁定时调用 setState() 或 markNeedsBuild()

    我想创建一个应用程序 其 UI 可以根据设备方向进行更新 在肖像布局中 我使用抽屉来显示一些元素 Fig https i stack imgur com 1M9hc png 在横向布局中 没有抽屉 但元素显示在屏幕左侧的列中 Fig htt
  • 使用 Laravel 5 上传 pdf 文件

    我正在使用 Laravel 5 2 我想制作一个可以用它上传 pdf 文件的表单 我想将该文件添加到 public 文件夹中的 files 文件夹中 这是我的观点 div class form group div
  • 我可以使用 HTML5 data-* 属性作为布尔属性吗? [复制]

    这个问题在这里已经有答案了 我想使用自定义布尔属性将元素的内容标记为可编辑 我知道data 属性 但不确定它们是否需要值 我不需要data is editable false 因为缺少该属性是等效的 我只关心它是否为 true 如果该属性存
  • Rails 路线:从根路径“/”获取资源

    我有一个查询资源 我想将其路由到我的域的根目录 因此发布到 会转到queries create行动等 我的路线 rb root to gt home index resources queries path gt 耙子路线 root hom
  • git lfs 迁移有什么作用?

    我以为git lfs migrate重写了存储库的历史记录 以便将指定的大文件保存在 LFS 中 这意味着存储库应该变得更小 因为它不直接包含大文件的所有版本 然而 当我跑步时 git lfs migrate import include
  • “使用 Google 登录”按钮的 data-login_uri 属性应使用什么?

    我正在尝试实现 使用 Google 登录 按钮 如此处记录的 https developers google com identity gsi web guides display button https developers googl
  • 表单提交前预览图像

    我的表单中有 ImageField 有没有办法在提交表单之前显示所选文件 也许在 jQuery 中可以实现 我读到我可以通过 request FILES 以某种方式访问 此文件 但我认为在提交表单之前它会是空的 试试这个 function
  • 在 ASP.NET Web API 中序列化继承类型

    我在 Web API 中序列化继承的对象时遇到问题 DataContract public class Item DataMember public int ID get set DataMember public string Name
  • CSS - 大于选择器 - 选择大于 N 的项目

    我有一些 p 我的 HTML 正文中的元素 我只想显示前两段 然后设置display none到之后的所有段落 为什么下面的代码不起作用 p p 1 p p 2 p p 3 p p 4 p 我的代码仍然在 Chrome 网络浏览器中显示所有
  • GUI 应用程序中的 Web 技术

    您在使用 Web 技术 HTML XML CSS JavaScript 实现 GUI 应用程序的部分功能方面有什么经验 优点和缺点 请说一下 没有服务器 关系数据库 AJAX 或用于会话管理的 cookie 也没有现有的 Web 应用程序
  • C 标准是否允许自修改代码?

    C 中的自修改代码是否可以以可移植的方式实现 我问的原因是 在某种程度上 OOP 依赖于自修改代码 因为在运行时执行的代码实际上是作为数据生成的 例如在 v 表中 但是 似乎如果这太过分了 它会阻止编译器中的大多数优化 例如 void ad
  • 三张牌排成一行,而不是所有牌排成一列

    我正在使用 React 和 Material UI 我在一个数组中有 40 张动态卡 当我渲染它们时 我想要连续 3 张卡 并将所有卡放在一列中 我正在使用这张卡 https codesandbox io s r084q99q34 http
  • 我可以在 OS X 中进行 Java 6 开发吗?

    我知道当 Leopard 推出时 每个人 嗯 每个 Java 开发人员并且足够关心在 Mac 上进行开发 都对没有 Java 6 SDK 支持感到愤怒 我知道有人在 Leopard 发布几个月后提供了某种破解方法 但我可以发誓 我稍后读到
  • 从我的数据框中创建虚拟变量矩阵;使用“NA”来查找缺失值

    我有一个基于不同年份的数据 重复了几次 我希望我的输出具有等于年数的列 每列代表一年 现在 目的是分别为每年创建虚拟变量 例如 只要主数据中存在与 2000 年平行的非 NA 观测值 2000 年的输出列就必须具有值 1 否则为 0 而且
  • 从 Firebase 通知恢复应用程序不起作用(Xamarin Forms)

    我正在努力整合Firebase 推送通知到我的应用程序 请找到我的火力基地Firebase消息服务 class 如果应用程序打开并运行 则一切正常 但是 如果应用程序未打开 如果我切换到其他应用程序 我的应用程序未关闭 我收到通知 但当我点
  • 帮助在 Rails 中构建模型

    class Profile has many projects through gt teamss has many teams foreign key gt member id has many own projects class na