Ruby on rails 如何从rails中的会话变量初始化记录,以便我们不需要执行初始化记录的查询?

Ruby on rails 如何从rails中的会话变量初始化记录,以便我们不需要执行初始化记录的查询?,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,devise,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,Devise,是否有任何方法可以从会话初始化记录。例如,我有一个组织对象,我把它放在会话对象中,如 session[:organization] = organization 现在,我制作了一个自定义方法当前组织(我知道designe)如下 这将返回组织对象。我的组织属于一个团队一个设计模型和团队有很多:组织但是当我打电话给 current_team.organizations.includes?(current_organization) 在视野中。它返回false,即使它包含在团队的组织中,但这样做

是否有任何方法可以从会话初始化记录。例如,我有一个组织对象,我把它放在会话对象中,如

session[:organization] = organization
现在,我制作了一个自定义方法
当前组织
(我知道designe)如下

这将返回组织对象。我的
组织
属于一个
团队
一个设计模型和
团队
有很多:组织
但是当我打电话给

current_team.organizations.includes?(current_organization)
在视野中。它返回false,即使它包含在团队的组织中,但这样做

current_team.organizations.reload.includes?(current_organization)

这是真的。在调用使用上述方法的视图之前,我使用organization对象设置了会话变量。是否有什么我遗漏了的东西,比如我无法找出即使包含也不返回true的原因?

尝试先保存记录

在将其保存到数据库中之前,在查询团队的组织子级时,它可能不会显示

session[:organization_id] = organization.id

def current_organization
    Organization.find session[:organization_id]
end

试着先保存记录

在将其保存到数据库中之前,在查询团队的组织子级时,它可能不会显示

session[:organization_id] = organization.id

def current_organization
    Organization.find session[:organization_id]
end

好吧,在谷歌搜索之后,我发现它代替了

Organization.new(session[:organization])
我应该用

Organization.instantiate(session[:organization])
从我发现的

实例化(属性、列类型={})公共

给定一个属性散列,instantiate返回 适当的等级。仅接受键作为字符串

例如,Post.all可以通过以下方式返回评论、消息和电子邮件: 将记录的子类存储在类型属性中。打电话 实例化而不是新的,finder方法确保它们得到新的 每个记录的相应类的实例


好吧,在谷歌搜索之后,我发现它代替了

Organization.new(session[:organization])
我应该用

Organization.instantiate(session[:organization])
从我发现的

实例化(属性、列类型={})公共

给定一个属性散列,instantiate返回 适当的等级。仅接受键作为字符串

例如,Post.all可以通过以下方式返回评论、消息和电子邮件: 将记录的子类存储在类型属性中。打电话 实例化而不是新的,finder方法确保它们得到新的 每个记录的相应类的实例


实际上,这个记录已经保存了,我提取了组织记录并试图保存在会话变量中。我的问题是重新加载为什么它返回true在这种情况下只存储组织id,然后调用该记录。我将更新我的答案,在每次动作之前都不调用我的代码> CurrutyObjult[/Cuff>方法],我不想再次调用该记录,而是考虑将一个动态方法写进团队模型,称为“CurrnTySO组织”,它使用一些DB逻辑来拉动你认为是当前的组织。避免在所有操作之前进行before\u filter/before\u操作?让我试试看,如果不查询实际的活动记录对象,就不可能检索到它。也许最合适的方法是重新访问设计?事实上,记录已经保存,我确实获取了组织记录并试图保存在会话变量中。我的问题是重新加载为什么它返回true在这种情况下只存储组织id,然后调用该记录。我将更新我的答案,在每次动作之前都不调用我的代码> CurrutyObjult[/Cuff>方法],我不想再次调用该记录,而是考虑将一个动态方法写进团队模型,称为“CurrnTySO组织”,它使用一些DB逻辑来拉动你认为是当前的组织。避免在所有操作之前进行before\u filter/before\u操作?让我试试看,如果不查询实际的活动记录对象,就不可能检索到它。也许最合适的方式是重新访问设计?