我正在使用Rails 3,并构建一个应用程序,用户可以在其中放置要租用的对象。对于每个对象,他可以决定:
has_many friends, :through => friendship
协会)我的问题是如何显示current_user可以看到的对象列表?我看到两个选项,我想知道哪个是最好的选择,或者它们是否相同:
1)在对象控制器中,构建用户可以看到的对象集合(@ objects = Object.can_see(current_user)
),然后将其传递给索引视图并显示整个列表
2)在控制器中,收集所有对象(@objects = Object.all
),将其传递给索引视图,并在视图中,对于每个对象,进行一系列测试以确定是否应显示对象
答案 0 :(得分:1)
最后,您可以根据项目所处的位置来决定。你真的有三个选择:
请记住,SQL db是内置的,用于执行快速数据访问。如果您的解决方案没有任何初始过滤,我会非常惊讶,除非您返回非常小的数据集进行过滤。最后,它归结为您的逻辑是多么复杂(它可以用SQL表达并且仍然可以理解吗?),每个选项的性能如何,以及解决方案的可扩展性。
还有许多优秀的ORM可以帮助模糊业务逻辑和数据访问之间的界限。他们中的许多人将根据您的代码动态创建复杂的SQL,因此对于它的丑陋程度并没有太大的担忧。