2014-09-01 62 views
0

我需要在我的rails語言學習應用程序中保存一個數組。這是我需要這樣做的情況/原因(如果有更好的方法,請讓我知道)。一次一個地呈現用戶10個詞來學習。學到這些單詞後,他們會在同一組10個單詞中得到答覆。Rails將數組存儲在數據庫中

對於'測驗'部分,我想隨機化出現在單詞中的順序(例如:目前,如果您學習單詞1.fish 2.cat 3.dog ...您將被問到相同的order 1.fish 2.cat 3.dog ...這可以使測驗更容易

我需要堅持它,以防用戶註銷或導航離開。在這種情況下,我想返回它們到。他們就停工,對測驗的確切的詞

這裏是控制器代碼我目前有:

def index 
    . 
    . 
    @quiz = Lang.limit(10).offset(current_user.bookmark - 11) 
    exercise_bank 
    . 
    .  
end 

private 
    def exercise_bank 
    current_user.random_exercise_array = (0..9).step(1).shuffle 
    current_user.save 
    @index2 = current_user.random_exercise_array[@index] 
    #@index starts at 0 and increments on each call to index action 
    #@index2 grabs the random number and uses it to reference a word in @quiz 
    #something like this: @quiz[@index2].spanish_to_english---grabs a english word 
    end 
end 

上面的想法是選擇一個隨機數字0-9,並用它來引用我的數據庫中的一個單詞。

random_exercise_array: "---\n- 6\n- 0\n- 1\n- 7\n- 8\n- 5\n- 9\n- 3\n- 2\n- 4\n" 

下面是相關用戶DB代碼:

class DeviseCreateUsers < ActiveRecord::Migration 
    serialize :random_exercise_array 
end 

相關遷移文件:

class AddRandomExerciseArrayToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :random_exercise_array, :text 
    end 
end 

是在像在我的數據庫以下爲random_exercise_array屬性上述結果這是解決這個問題的最好方法嗎?如果是這樣,你能解釋一下如何從random_exercise_array中取回一個不包含( - )和(\ n')的整數嗎?

+0

「我想要將數組存儲在數據庫中」通常通過將數組設置爲has_many關聯來解決 – Pavling 2014-09-01 07:57:38

回答

0

如果你想要得到一個數組從DB文本列回來,你應該聲明的輸入您的用戶模型是這樣的:

class DeviseCreateUsers < ActiveRecord::Base #why your original code inherit from ActiveRecord::Migration? 
    serialize :random_exercise_array, Array 
end 

然後你可以使用current_user.random_exercise_array作爲數組,而不是一個字符串。

+0

我對上面所做的更改進行了修改,但仍然以DB中的以下內容結束:「\ n-6 \ n-0 \ n-1 \ n-7 \ n-8 \ n- 5 \ n-9 \ n-3 \ n-2 \ n-4 \ n「。你通常如何處理這個問題? – mtcrts70 2014-09-01 17:06:34