2012-07-11 30 views
1

我刚开始使用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 

如果用户登录并找到用户它只是检查...

我应该移动电话分贝以最佳实践模式或使用上述方法也很好?

+1

我相信这种电话很好。问题出现在像User.where(“id =?和active =?和wealth =?”,current_user.id,true,:rich)这样的调用中。在这种方法中,最好在模型中创建一个范围,并从控制器调用它,比如'User.find_active_and_rich',就像这样。 – MurifoX 2012-07-11 14:35:25

+0

这种模式对我来说毫无意义。根据你的代码,'current_user'已经是你提取的对象。另外,如果你使用'find_by_id!',Rails将处理RoutingError,这个方法将通过渲染一个404本身来提高。 – 2012-07-11 14:39:03

+0

@injekt是啊这行应该被删除......谢谢 – fxuser 2012-07-11 14:40:19

回答

2

你做的是在我看来罚款的方式。控制器的工作是设置视图的数据,并设置数据从数据库中获取数据的一部分。

对于更复杂的DB查询,你可以使用scope分别位于模型。这样,控制器就不会在模型上持有过多的数据库查询逻辑。

1

您通常要使用的轨道默认与活动记录为我们提供了一个资源库模式。我会说这非常好。如果你有更复杂的业务逻辑或者从多个表中拉出来,那么我可能会把它移到它自己的类中。