2012-08-02 28 views
0

在应用上,用户回答问题。每次他/她登录时,都会显示三个未答复的问题。用户可以跳过(或回答!)一个问题,然后显示另一个未答复的问题。如何在客户端处理多个交换值(rails)

我一直在考虑查找未解答的问题,并写出一个cookie,其中显示未回答的问题的所有id,以及未在网页上显示问题id的另一个cookie。

,但我有一个很难弄清楚如何处理cookie值之间的swaping如果用户跳过一个问题

我还以为存储显示问题在数据库上的回答的,具有特定表示它们正在显示但尚未回答的值。但这可能会非常密集的数据库。

我不是在寻找某人给我的代码,只是指向我最合适的方式来做到这一点,我会自己编写代码。

我正在使用Rails。

回答

1

为了简单起见,我会将它保留在数据库中。我会有一个问题和答案表。下面是一些框架代码...

user_id 
question_id 
answer_status 

class Answer < ActiveRecord::Base 
    belongs_to :user 
    scope :seen_but_unanswered, where(:answer_status => 'seen') 
    scope :answered, where(:answer_status => 'answered') 
end 

class User < ActiveRecord::Base 
    has_many :answers 

    def unseen_questions 
    ... 
    end 


end 

然后,您可以提出这些要求:

@user.answers 
@user.unseen_questions 
@user.answers.seen_but_unanswered 
@user.answers.answered 
+0

这是比会更好的解决方案。 – JohnMerlino 2012-08-02 17:29:29

+0

完成。它的工作原理,谢谢。 – wachichornia 2012-08-03 13:59:40

0

将所有这些信息存储在一个散列并使用会话?只要哈希不是非常大,这应该没问题。

session[:unanswered] = unanswered_hash unless session[:unanswered].present? 

我不完全确定这是否涵盖了您想要做的所有事情。