Ruby on rails 我应该把代码放在哪里?

Ruby on rails 我应该把代码放在哪里?,ruby-on-rails,Ruby On Rails,我有用户和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]}}

我有用户和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模型中并将当前用户传递到其中?

这是一个好的体系结构决策。您需要将其保存在用户中,因为该用户是StoredItem的所有者。用户负责其存储的项目,而不是反过来。

谢谢,但我的用户负责许多实体(项目、位置、联系人……),而且它往往是一个非常大的用户模型。我不确定它是否好。用户模型在应用程序中自然要承担很多责任。如果需要,可以创建模块(将它们放在lib目录中)并将它们包含在用户类中。通过这种方式,您可以分离功能。如果你想用模块概念再次回答问题,或者你知道我的意思,请告诉我。
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
def save_item
  @user = UserData.find_by_login(session[:cuser])
  @user.save_item(params)
  # ...
end