查找嵌套了几层深度的事物列表

时间:2013-11-12 00:09:16

标签: ruby-on-rails ruby

我有一个训练周,有很多训练。每个锻炼都有很多练习。我试着在训练周课上写一个方法,告诉我训练周的所有练习。

我正在使用Rails。最终的目标是能够像TrainingWeek.exercises一样简单,就像我可以做Workout.exercises一样。

有什么想法吗?我的最终目标是得到一个像这样的json输出:

"exercise": [
    {                    
        "name": "Bench Dips 1"
    },
    {
        "name": "Hanging Leg Raises 1"
    },
    {
        "name": "Bench Press 0"
    },
    {
        "name": "Bicep Curls 0"
    },
    {
        "name": "Lat Pulldowns 1"
    },
    {
        "name": "Bench Dips 0"
    }
]

2 个答案:

答案 0 :(得分:2)

将此关联添加到您的TrainingWeek模型中:

has_many :exercises, :through => :workouts, :uniq => true

然后你可以这样做:

@some_training_week.exercises

答案 1 :(得分:0)

这个怎么样:

@training_week = TrainingWeek.find(...)

@schedule_hash = { "exercise" => @training_week.workouts.inject(Array.new) { |workout, array| array << { "name" => workout.name }; array } }

此时,@schedule_hash应该接近你想要的。我没有测试过这个,但那应该非常接近。