Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为ruby中的每个用户创建一个全局数组。

为ruby中的每个用户创建一个全局数组。
EN

Stack Overflow用户
提问于 2011-01-29 13:02:13
回答 3查看 2K关注 0票数 0

我有个问题,我想找出解决这个问题的最简单的方法.

我的应用程序上有多个用户。该应用程序允许用户将书籍添加到读队列列表中(就像用户可以监视的图书列表一样)。

最初,我将读队列列表设置为全局数组。然而,这意味着多个用户将书籍添加到单个全局数组中。如果user1添加了3本书,user2也会看到这3本书。或者,如果user1清除了读队列列表,user1 2的书籍也会被清除。

可能的解决办法:

  1. 也许我可以在数组中创建一个键,将其一部分与用户关联起来,但我认为数组会变得相当大……
  2. 也许可以创建一个db表“队列列表”。但对于这样的事情,似乎有很多事情要做..。
  3. 可能为每个用户创建一个唯一的全局数组。(我喜欢这个,但不知道怎么做)

希望这是明确的,我是相当新的rails,所以任何帮助都是感谢的!

我对解决方案3的尝试:

books_controller.rb

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def add_book_to_queue
  user = User.find(params[:id])
  user.read_queuelist.push(params[:book_info])
  @readlist = user.read_queuelist
end

user.rb

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def read_queuelist
  $read_queuelist ||= Array.new
end

视图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%= @readlist %> 
EN

回答 3

Stack Overflow用户

发布于 2011-01-29 13:10:15

如果您的应用程序足够简单,您可以为每个用户创建一个数组,如下所示。但是,如果您的应用程序要处理大量用户和大量书籍,那么您应该关注DB集成。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Book
  attrr_accessor :title, :author

  def initialize(t, a)
    @title, @author = t, a
  end
end

class User
  attr_accessor :books

  def initialize
    @books =  Array.new
  end

  def add(b)
    @books << b
  end
end

joe = User.new

joe.add(Book.new("moo", "foo"))

puts "Joe likes #{joe.books.length} books"

UPD: for rails,看看has_manybelongs_to 联想

票数 0
EN

Stack Overflow用户

发布于 2011-01-29 17:40:53

您可以使用Redis创建许多全局散列。它具有缩放和可选择的持久性(通过备份)的优点。请参阅http://redis.io/commands#hashhttp://redistogo.com/免费的Redis主机。

票数 0
EN

Stack Overflow用户

发布于 2011-01-30 11:06:38

由于您是Rails新手,我想您会发现使用ActiveRecord将模型数据持久化到数据库是最简单的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4839409

复制
相关文章
避免在 JS 中过多使用 IF 语句优化技巧
最近在重构代码时,我发现早期的代码使用太多的 if 语句,其程度是我从未见过的。这就是为什么我认为分享这些简单的技巧是非常重要的,这些技巧可以帮助我们避免过多的使用 if 语句。
前端小智@大迁世界
2020/10/26
2.3K0
C++核心准则ES.86:避免在基本for循环的循环体中修改循环控制变量​
ES.86: Avoid modifying loop control variables inside the body of raw for-loops
面向对象思考
2020/06/11
1.8K0
[译] 在 JavaScript 中通过 queueMicrotask() 使用微任务
原文:https://developer.mozilla.org/en-US/docs/Web/API/HTMLDOMAPI/Microtask_guide
江米小枣
2020/06/15
3.2K0
python product避免多重循环
通过 from itertools import product 避免多重循环,提高可读性
葫芦
2019/05/14
1.3K0
HTML5中类jQuery选择器querySelector的使用
简介 HTML5向Web API新引入了document.querySelector以及document.querySelectorAll两个方法用来更方便地从DOM选取元素,功能类似于jQuery的选择器。这使得在编写原生JavaScript代码时方便了许多。 用法 两个方法使用差不多的语法,都是接收一个字符串参数,这个参数需要是合法的CSS选择语法。 element = document.querySelector('selectors');elementList = document.querySel
前朝楚水
2018/04/02
3.4K0
HTML5中类jQuery选择器querySelector的使用
pivottablejs|在Jupyter中尽情使用数据透视表!
大家好,在之前的很多介绍pandas与Excel的文章中,我们说过「数据透视表」是Excel完胜pandas的一项功能。
刘早起
2020/10/23
3.8K0
pivottablejs|在Jupyter中尽情使用数据透视表!
避免在Swift中使用单例
"我知道单例是不好的,但是......",这是开发人员在讨论代码时经常说的话。社区里似乎有一个共识,那就是单例是 "不好的",但同时苹果和第三方的Swift开发者都在应用内部和共享框架中不断使用它们。
韦弦zhy
2022/03/30
5110
在nodejs中事件循环分析
在上一篇文章在chromev8中的JavaScript事件循环分析中分析到,在chrome中的js引擎是通过执行栈和事件队列的形式来完成js的异步操作。然而在node中,事件循环表现出的状态与浏览器中大致相同。不同的是node中有一套自己的模型。node中事件循环的实现是依靠的libuv引擎。我们知道node选择chrome v8引擎作为js解释器,v8引擎将js代码分析后去调用对应的node api,而这些api最后则由libuv引擎驱动,执行对应的任务,并把不同的事件放在不同的队列中等待主线程执行。 因此实际上node中的事件循环存在于libuv引擎中。
Yerik
2022/04/11
4K0
querySelector与querySelectorAll
HTML5学堂:JS获取节点的方法很多,但真正常用的或许就是通过id和标签获取节点,用传统的几种方法想要快速的查找到某个标签,就意味着需要更多的id,命名多了自然就烦了,接下来给大家介绍的方法就能简化很多操作。 常用的获取节点的方法 JS中经常需要获取节点,下面四种是较为常见的。 1、通过id获取节点:document.getElementById("test") 2、通过标签获取节点:document.getElementsByTagName("div") 3、通过类名获取节点:document.getE
HTML5学堂
2018/03/12
1.4K0
【译】如何避免在JavaScript中阻塞DOM
原文链接:https://www.sitepoint.com/avoiding-dom-blocking/
腾讯IVWEB团队
2020/06/28
2.8K0
Mysql避免全表update
在测试的时候忘记写where条件导致全表更新的话,可以收拾包袱走人了 下面这条语句可以开启检查,当没有加where时拦截下来 set sql_safe_updates=1; 关闭: set sql_safe_updates=0;
DH镔
2019/12/20
2.7K0
mysql or条件可以使用索引而避免全表
CREATE TABLE IF NOT EXISTS `t_myisam` ( `id` int(1) NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL, `aNum` char(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `uid` (`uid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;
黄规速
2022/04/14
1.5K0
mysql or条件可以使用索引而避免全表
在货币计算中应该避免浮点数
float和double数据类型对金融计算(甚至是军事用途)都是有害的,永远不要用它们来进行货币计算。如果精度是您的需求之一,那么使用BigDecimal。
程序你好
2018/09/29
2.5K0
在货币计算中应该避免浮点数
SqlServer 循环建表、删除表、更新表
常用于分库分表 1、批量删除 declare @outter int declare @inner int declare @tablePrefix varchar(30) declare @tableName varchar(36) set @outter=1 set @inner=0 while (@outter<=12) begin set @tablePrefix='BankPayOrder_'+convert(varchar,@outter)+'_' while(@inner<=9) beg
郑小超.
2019/01/07
2.8K0
python如何使用for循环_Python 中for循环的应用
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170074.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
7K0
这些优化技巧可以避免我们在 JS 中过多的使用 IF 语句
最近在重构代码时,我发现早期的代码使用太多的 if 语句,其程度是我从未见过的。这就是为什么我认为分享这些简单的技巧是非常重要的,这些技巧可以帮助我们避免过多的使用 if 语句。
前端小智@大迁世界
2020/05/11
3.3K0
在 Andorid 中为什么要避免「内存抖动」?
但是其实初步想,为什么要避免内存抖动呢?频繁创建对象,被 Java 虚拟机的回收机制自动回收了,这不是挺好的吗?开发者为什么还需要关心这个问题呢?
夏洛克的猫
2020/05/12
1.1K0
避免在云迁移过程中宕机
在公共云迁移期间,IT团队需要采取谨慎的步骤,以避免听到“系统宕机”这种可怕的提示。 随着组织迁移到基于云计算的基础设施,IT团队需要在迁移过程中保持可用性。但是,考虑到所有复杂性,在云计算迁移过程中,防止宕机或最小化停机时间并不容易。云计算团队需要考虑数据不一致,监控不同的软件版本,并检查其网络连接是否成功。 如果企业的应用程序崩溃,业务往往会停止。虽然精确的指标因企业和应用的情况而异,但调研机构Gartner公司在2014年发现,网络停机时间平均每分钟的损失为5,600美元。停机时间的高昂成本是企
静一
2018/03/27
9040
避免在云迁移过程中宕机
在循环内使用闭包(Closures)
闭包的本质是一个内部函数访问其作用域之外的变量。闭包可以用于实现诸如 私有变量 和 创建工厂函数之类的东西。
前端迷
2018/10/22
1.2K0
点击加载更多

相似问题

使用getAttribute的for-循环中的querySelector

13

在R中避免For-循环

55

避免R中的for-循环

33

在本例中避免for-循环的方法

12

如何避免R中的for-循环

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文