【发布时间】:2014-01-30 08:56:02
【问题描述】:
所以我有这样的 ActiveRecord 模型
class User < ActiveRecord::Base
has_many :posts
end
我有一个 Api 类,它从 web 获取 User 的属性并返回一个哈希,这反过来需要一些预处理以适应用户模型。例如。来自api的响应是{response: {id:20, stars:{count:20}}},需要处理成user.id=20和user.stars_count=20。
现在有 2 种方法我可以很容易地看到做影响的事情。一种方法是向 Api 添加一个方法,例如 get_user,所有处理都会返回一个新的 User 模型,并填充属性。另一种是将fetch方法添加到执行所有处理的User。
在第一种情况下,我不喜欢我的 Api 类会充满很多 get_model 方法,例如 get_user、get_post、get_all_posts_for_user 等,并且很快就会变得难以管理。在第二种情况下,模型充满了很多预处理方法,如fetch、fetch_all_posts,看起来也很糟糕。
那么处理这个问题的最佳实践是什么?
【问题讨论】:
-
如果您的控制器中有
{response: {id:20, stars:{count:20}}}数据,您可以轻松地以params的形式获取这些数据(例如params[:response][:id])
标签: ruby-on-rails ruby activerecord