我有个问题,我想找出解决这个问题的最简单的方法.
我的应用程序上有多个用户。该应用程序允许用户将书籍添加到读队列列表中(就像用户可以监视的图书列表一样)。
最初,我将读队列列表设置为全局数组。然而,这意味着多个用户将书籍添加到单个全局数组中。如果user1添加了3本书,user2也会看到这3本书。或者,如果user1清除了读队列列表,user1 2的书籍也会被清除。
可能的解决办法:
希望这是明确的,我是相当新的rails,所以任何帮助都是感谢的!
我对解决方案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 %>
发布于 2011-01-29 13:10:15
如果您的应用程序足够简单,您可以为每个用户创建一个数组,如下所示。但是,如果您的应用程序要处理大量用户和大量书籍,那么您应该关注DB集成。
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_many
和belongs_to
联想。
发布于 2011-01-29 17:40:53
您可以使用Redis创建许多全局散列。它具有缩放和可选择的持久性(通过备份)的优点。请参阅http://redis.io/commands#hash和http://redistogo.com/免费的Redis主机。
发布于 2011-01-30 11:06:38
由于您是Rails新手,我想您会发现使用ActiveRecord将模型数据持久化到数据库是最简单的解决方案。
https://stackoverflow.com/questions/4839409
复制