我有一个 Controller ,其中有一个“无 View ”操作。该 Controller 用于设置名为 @@ComputedData={}
的变量。但数据是根据应用程序用户上传的 csv 文件计算的。现在用户会看到他们的特定数据还是 @@ComputeData
对所有用户都一样?有人可以向我解释这个概念吗?我真的很犹豫。预先感谢您,对于菜鸟问题深表歉意。
最佳答案
在 Rails 中使用类变量要小心。
类变量不在进程之间共享,因此您会得到不一致的结果。
有关更多信息,请查看:
您始终可以使用类和类方法为所有用户提供相同的数据:
class Computation
attr_reader :computed_data
@computed_data = 3
end
所以你可以请求 Computation.computed_data
(将是 3),
但是 Computation.computed_data = 4
会给你一个 NoMethodError
。
如果你在另一边,如果你想要每个用户的 computed_data
,你应该将它保存在 ActiveRecord 模型中的数据库中(Rails 的典型情况)......
关于ruby-on-rails - Ruby on Rails Controller 中的@@variables 是特定于用户 session 的,还是所有用户都会看到相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22185121/