2011-01-29 58 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將模型數據保存到數據庫最終將成爲最簡單的解決方案。