我有三个表:用户、任务和用户任务(其中用户和任务作为外键,没有其他列)。对于特定的用户/任务组合,用户任务表中的条目可能存在也可能不存在(出于可伸缩性原因,根据需要创建用户任务记录)。
在我看来,我想显示当前登录用户的所有任务。对于每个任务,如果 UserTask 表中存在相应的记录,我想显示文本“是”;否则我想显示“否”。但是我有点不确定我应该从控制器传递哪些对象到视图,以及一旦将它们传递给视图我应该如何与对象交互(即我可以做什么)。
我应该将用户、任务和用户任务作为单独的变量从控制器传递到视图吗?这样,我可以通过简单地遍历 Tasks 变量来显示所有任务,并且对于每个任务,我可以where
在视图中使用(ActiveRecord 查询)来确定每个任务是否有一个 UserTask。问题是,是否可以将对象where
的find
查询传递到视图中?我一直认为你把它留给控制器,只在视图中做简单的事情,比如迭代传递给视图的对象(如果这是错误的,请纠正我)。
或者我应该在控制器中构建一个哈希,其中每个键都是一个任务,每个值都是一个用户任务,然后将该哈希传递给视图?这样,我可以通过简单地遍历所有键来显示视图中的所有任务,并且对于每个任务键,我可以通过检查值是否为空来显示“是”或“否”。
还是有另一种方法(即加入表格或其他东西......不确定它是如何工作的)?