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操作?让我试试看,如果不查询实际的活动记录对象,就不可能检索到它。也许最合适的方式是重新访问设计?