部分加载模型在Ruby On rails上

时间:2014-11-26 10:49:47

标签: ruby-on-rails ruby activerecord activemodel

家伙!我试图做出正确的架构决策:

默认情况下,我需要隐藏其他用户的某些字段。所以不要费心过滤视图中的字段,我根本不想加载这些字段,例如:

default_scope -> { select(column_names - FILTERED_PARAMS) }

在特殊情况下,应明确加载其余字段。

问题是,一旦代码引用缺少的字段,就会出现nomethod错误。我试图对这些领域进行元编程,但迄今为止毫无结果。在我看来,这种方法并不适合AR对象的生命周期。

你有没有实现过这样的功能,如果你选择了哪种模式?

1 个答案:

答案 0 :(得分:0)

根据我的经验,最好的决定是不使用select过滤查询中的这些参数,而是过滤实际发送给用户的参数。 my_model.as_json(带有给定的param过滤选项)是一个简单的解决方案,但对于更高级的用途我会建议Rabl gem https://github.com/nesquena/rabl 这样,即使在模型 - 视图 - 控制器方式的非常高级的情况下,您也可以更好地控制返回哪些参数。