2012-07-11 50 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

您通常要使用的軌道默認與活動記錄爲我們提供了一個資源庫模式。我會說這非常好。如果你有更復雜的業務邏輯或者從多個表中拉出來,那麼我可能會把它移到它自己的類中。