我有两个班级:
class User < ActiveRecord::Base
has_many :articles
...
end
和
class CurrentSession
def initialize(...)
...
end
def managing
User.where(...).first
end
end
User
类是从Rails AR继承的对象。请注意,用户具有关联has_many :articles
。您还会注意到current_session
通过managing
方法公开了User对象。这是使用合成完成的。
current_session = CurrentSession.new(...)
current_session.managing.articles if current_session.managing.present?
current_session
现在可以通过Article
方法访问managing
对象了吗?
current_session
知道的太多了吗?我是否只是将Article
对象的内容泄漏到current_session
?这太糟了吗?
答案 0 :(得分:0)
如果User
是ActiveRecord模型,并且您通过另一个类的方法公开该模型,那么是的,您将公开该模型的所有,包括它关系和这些关系的方法。
我会问这个问题:你需要暴露多少?在Session#managing
方法中返回完整用户的目的是什么?鉴于课程的名称,您可能只需要跟踪用户的ID?然后就回来吧。问题解决了。如果您确实需要完整的用户,我不知道您将如何(或为什么)阻止访问它的关系。