2011-10-01 289 views
0

我有機型用戶和StoredItem:我應該在哪裏放置代碼?

class UserData < ActiveRecord::Base 
    has_many :stored_items, :dependent => :destroy 
end 

class StoredItem < ActiveRecord::Base 
    belongs_to :user 
    named_scope :lookup, lambda { |id| { :conditions => ['qid = ?', id]}} 
end 

我需要有兩種方法來添加和刪除的項目StoredItem當前用戶。我把這個代碼,用戶模型:

class UserData < ActiveRecord::Base 
    has_many :stored_items, :dependent => :destroy 

    def save_item(params) 
    if(!self.stored_items.lookup(params[:qid]).exists?) 
     item = self.stored_items.new(:sid => params[:qid], 
            :name => params[:qti], 
            :url => params[:qur], 
            :group_id => params[:title], 
            :rating => Integer(params[:rating])) 
     item.save 
    end 
    end 

    def remove_item(qid) 
    item = self.stored_items.lookup(qid).first() 
    item.destroy 
    end 
end 

因此,這裏的StoredItem控制器:

def save_item 
    @user = UserData.find_by_login(session[:cuser]) 
    @user.save_item(params) 
    # ... 
end 

是好建築的決定,或將是更好地把這段代碼StoredItem模型,並通過當前用戶進入它?

回答

2

這是一個很好的建築決策。由於用戶是StoredItem的所有者,因此您需要將其保留在用戶中。用戶對其存儲的物品負責,而不是相反。

+0

謝謝,但我的用戶是負責許多實體(項目,位置,聯繫人....),它往往是一個非常大的用戶模型。我不確定這是否好。 – demas

+0

用戶模型在應用程序中很自然地負責。如果你願意,你可以創建模塊(將它們放在你的lib目錄中)並將它們包含在你的用戶類中。這樣你可以分開功能。讓我知道如果你想用模塊概念再次回答這個問題,或者你知道我在做什麼。 – WattsInABox