Ruby on Rails的,我应该从查询控制器
问题描述:
我刚开始使用Ruby on Rails的,以分贝,我不知道我应该怎么办查询数据库,以获取数据,添加数据或编辑数据...Ruby on Rails的,我应该从查询控制器
是更好地找到例如从控制器或用户其更好地查询添加到模型?
目前,我的用户的主页控制器看起来像这样一些简单的功能
class HomeController < ApplicationController
#get current_user variable
helper_method :current_user
def index
if user_signed_in?
@user = User.find_by_id(current_user.id)
else
render_404
end
end
end
如果用户登录并找到用户它只是检查...
我应该移动电话分贝以最佳实践模式或使用上述方法也很好?
答
你做的是在我看来罚款的方式。控制器的工作是设置视图的数据,并设置数据从数据库中获取数据的一部分。
对于更复杂的DB查询,你可以使用scope分别位于模型。这样,控制器就不会在模型上持有过多的数据库查询逻辑。
答
您通常要使用的轨道默认与活动记录为我们提供了一个资源库模式。我会说这非常好。如果你有更复杂的业务逻辑或者从多个表中拉出来,那么我可能会把它移到它自己的类中。
我相信这种电话很好。问题出现在像User.where(“id =?和active =?和wealth =?”,current_user.id,true,:rich)这样的调用中。在这种方法中,最好在模型中创建一个范围,并从控制器调用它,比如'User.find_active_and_rich',就像这样。 – MurifoX 2012-07-11 14:35:25
这种模式对我来说毫无意义。根据你的代码,'current_user'已经是你提取的对象。另外,如果你使用'find_by_id!',Rails将处理RoutingError,这个方法将通过渲染一个404本身来提高。 – 2012-07-11 14:39:03
@injekt是啊这行应该被删除......谢谢 – fxuser 2012-07-11 14:40:19