Ruby on rails 我应该把代码放在哪里?
我有用户和StoredItem的模型: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]}}
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