如何解决帮助在Rails中构建模型
|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
。我想要做的是在ѭ2member页面中为项目的每个成员(包括所有者)生成一个链接,以使自己成为Evaluation
。该人将单击链接并评估与该链接相关的人。 “ 4”的所有者将评估所有成员,所有成员将评估所有者。
我将模型Evaluation
定义如下,但是我想念一些东西:
class Evaluations < ActiveRecord::Base
belongs_to :evaluated,:class_name => \'Profile\',:foreign_key => \"evaluated_id\"
belongs_to: :profile,:foreign_key => \"profile_id\"
end
记住Evaluation
表将具有大量的属性,这就是为什么我不打算使用has_many_and_belongs_to_many
的原因。
我该如何创建此模型以便执行我想做的事情并能够通过project#show
页面访问所有我需要的东西?
谢谢!
已编辑
所做的更改:
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,:foreign_key => \"profile_id\"
belongs_to: :project,:class_name => \'Project\',:foreign_key => \"project_id\"
end
解决方法
您的团队和个人资料(成员)协会有些混乱。团队有许多个人资料(成员),而个人资料(成员)属于团队。除此之外,您可能只是使事情变得过于复杂。我很好奇为什么您不只是调用Profile Model Member而使事情变得简单得多?
话虽这么说,您正在做一组非常复杂的关联。我强烈建议您仔细阅读ActiveRecord关联文档,以深入了解这些工作原理,尤其是如何自动确定主键和外键。
我认为以下将为您提供所需的东西。
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
这样,您应该能够访问正确链接所需的集合/对象,例如:
项目成员
项目拥有者
项目团队
团队项目
profile.projects
profile.owned_projects
个人档案
团队成员
队长
项目评估
个人资料评估
评估者
profile.evaluations_given
还请注意,如果您尝试使用RESTFUL框架,则嵌套资源将同样复杂。阅读!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。