2011-01-29 62 views
0

我有一个问题,我试图找出解决这一点的最好/最简单的方法...使每个用户的全局阵列中的红宝石

我有我的应用程序的多个用户。该应用程序允许用户将书籍添加到读取队列列表(如用户可以密切关注的书籍列表)。

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

可能的解决方案:

  1. 也许我可以创建数组它的一部分给用户相关联的密钥,但我想,该数组将得到相当大......

  2. 也许创建一个数据库表“队列表”..但这似乎很多事情要做这样的事情..

  3. 也许创建一个全球阵列唯一为每个用户。 (我喜欢这一个,但不知道如何做到这一点)

希望这是明确的,我是很新的轨道,所以任何帮助表示赞赏!

我试图在解决方案3:

books_controller.rb

def add_book_to_queue 
    user = User.find(params[:id]) 
    user.read_queuelist.push(params[:book_info]) 
    @readlist = user.read_queuelist 
end 

user.rb

def read_queuelist 
    $read_queuelist ||= Array.new 
end 

视图

<%= @readlist %> 

回答

0

如果您的应用程序足够简单,您可以为每个用户创建一个数组,如下所示。但是,如果您的应用程序旨在处理大量用户和大量书籍,则应该考虑与数据库集成。

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:钢轨,看看has_manybelongs_toassociations

+0

嗯感谢您的回复〜我认为这是最好的解决方案,生病尝试 – thedeepfield 2011-01-29 21:23:34

0

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