我需要在我的rails语言学习应用程序中保留一个数组。以下是我需要这样做的情况/原因(如果有更好的方法请告诉我)。用户被呈现,一次一个,10个单词学习。在学会了这些单词之后,他们会在同一组10个单词上进行评估。
对于'测验'部分我想随机化单词出现的顺序(例如:目前如果你学习单词1.fish 2.cat 3.dog ...你将按相同的顺序查询1.fish 2.cat 3。狗...这可以使测验更容易。
我需要坚持下去以防用户注销或导航。在这种情况下,我想让他们回到他们在测验中留下的确切词。
这是我目前拥有的控制器代码:
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属性:
random_exercise_array: "---\n- 6\n- 0\n- 1\n- 7\n- 8\n- 5\n- 9\n- 3\n- 2\n- 4\n"
以下是相关的用户数据库代码:
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中取回一个没有所有( - )和(\ n&#39;)s的整数吗?
答案 0 :(得分:0)
如果要从数据库文本列中获取数组,则应在用户模型中声明类型,如下所示:
class DeviseCreateUsers < ActiveRecord::Base #why your original code inherit from ActiveRecord::Migration?
serialize :random_exercise_array, Array
end
然后您可以使用current_user.random_exercise_array
作为数组而不是字符串。