应该从控制器查询数据库中的ruby on rails

时间:2012-07-11 14:31:40

标签: ruby-on-rails database activerecord

我刚刚开始使用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调用移动到模型以获得最佳实践,还是使用上述方法也可以?

2 个答案:

答案 0 :(得分:2)

您通常希望使用一个存储库模式,rails默认情况下会为我们提供活动记录。我会说这很好。如果你有更复杂的业务逻辑或从多个表中提取,那么我可能会把它移到它自己的类中。

答案 1 :(得分:2)

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

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