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