【发布时间】:2012-07-30 02:07:02
【问题描述】:
我有三个表:用户、任务和用户任务(其中用户和任务作为外键,没有其他列)。 UserTask 表中的条目可能存在也可能不存在,用于特定的用户/任务组合(出于可伸缩性原因,根据需要创建 UserTask 记录)。
在我看来,我想显示当前登录用户的所有任务。对于每个任务,如果 UserTask 表中存在相应的记录,我想显示文本“是”;否则我想显示“否”。但是我有点不确定我应该从控制器传递哪些对象到视图,以及一旦它们传递到视图我应该如何与对象交互(即我可以做什么)。
我应该将用户、任务和用户任务作为单独的变量从控制器传递到视图吗?这样,我可以通过简单地遍历 Tasks 变量来显示所有任务,并且对于每个任务,我可以在视图中使用where(ActiveRecord 查询)来确定每个任务是否有一个 UserTask。问题是,可以对传递到视图的对象进行where 和find 查询吗?我一直认为你把它留给控制器,只在视图中做简单的事情,比如迭代传递给视图的对象(如果有错,请纠正我)。
或者我应该在控制器中构建一个哈希,其中每个键都是一个任务,每个值都是一个用户任务,然后将该哈希传递给视图?这样,我可以通过简单地遍历所有键来显示视图中的所有任务,并且对于每个任务键,我可以通过检查值是否为空来显示“是”或“否”。
或者还有其他方式(即加入表格或其他方式......不确定如何工作)?
【问题讨论】:
-
其实,如果你遵循Model2 MVC或HMVC,视图应该是从模型层获取信息。话又说回来..如果你真的严格遵守 MVC 模式,你也不会使用活动记录(反)模式。
标签: ruby-on-rails ruby rails-activerecord