Где я должен положить код? - PullRequest
       0

Где я должен положить код?

0 голосов
/ 01 октября 2011

У меня есть модели User и 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 и передать в него текущего пользователя?

1 Ответ

2 голосов
/ 01 октября 2011

Это хорошее архитектурное решение. Вам необходимо сохранить его в пользователе, так как пользователь является владельцем StoredItem. Пользователь несет ответственность за свои сохраненные элементы, а не наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...