我现在正在进行一个项目,这确实是一个非常大的数据模型。我试图找出处理模型间关系的最佳方法。
为了简洁起见:
Car
has_many :passengers
has_many :items
或
Team
has_one :head_coach
has_many :coaches
has_many :players
belongs_to :owner
所以从展示页面我会看到谁在车里以及车里有什么物品。我有一些同事认为我们应该有一个名为manage
的控制器操作,他们会点击显示页面上的链接来管理其他模型之间的关系
所以Team
控制器会有这个
class TeamController < ApplicationController
# ... magic ...
def manage_players
@signed_players = Player.signed_players
@free_agents = Player.free_agents
end
end
manage_players
视图只会链接到相应控制器上的实际RESTful操作以删除关系等...
任何人都有关于如何实现这一目标的想法?
答案 0 :(得分:1)
这是一种过于复杂的方法,好消息是,它比你想象的要简单。
省去一些麻烦。您问题的快速回答是使用nested resources:您可以使用单个表单处理Car
以及所有相关的乘客/物品,或Team
及其教练,玩家,等
您所描述的操作/视图只是edit
/ Car
上的Team
操作。 manage
动作名称是一个不错的主意,但是你真正采取的行动是编辑(没有什么特别的,你所描述的是什么),所以为什么要混淆当默认调用时发生的事情它edit
?
如果你想要一个利用嵌套路线的实例,请查看rpglogger.com(这是我的网站)。当您使用它时,请注意地址栏中的路线/ URL。
它也是open source。与您的问题特别相关的是:
sections
上定义资源两次 - 这实际上给了我两个不同版本的路径 - 一个是作用于LogBook的,另一个是作用于对象的在一节new
和edit
形式 - 但它很短,相当简单,而且相当容易鉴于它的作用,阅读/未定。