家伙!我试图做出正确的架构决策:
默认情况下,我需要隐藏其他用户的某些字段。所以不要费心过滤视图中的字段,我根本不想加载这些字段,例如:
default_scope -> { select(column_names - FILTERED_PARAMS) }
在特殊情况下,应明确加载其余字段。
问题是,一旦代码引用缺少的字段,就会出现nomethod错误。我试图对这些领域进行元编程,但迄今为止毫无结果。在我看来,这种方法并不适合AR对象的生命周期。
你有没有实现过这样的功能,如果你选择了哪种模式?
答案 0 :(得分:0)
根据我的经验,最好的决定是不使用select过滤查询中的这些参数,而是过滤实际发送给用户的参数。 my_model.as_json(带有给定的param过滤选项)是一个简单的解决方案,但对于更高级的用途我会建议Rabl gem https://github.com/nesquena/rabl 这样,即使在模型 - 视图 - 控制器方式的非常高级的情况下,您也可以更好地控制返回哪些参数。