我正在尝试解决我的关系问题,但我在使用关联时遇到了麻烦。
所以我有三个模型
当我运行这个测试时,它显示
所以我有三个模型
Workout
,Exercise
和WorkoutExercise
。训练应该有很多锻炼,而锻炼应该有不同的训练,因此我写了:class Workout < ActiveRecord::Base
has_many :workout_exercises
has_many :exercises, :through => :workout_exercises
end
class Exercise < ActiveRecord::Base
has_many :workout_exercises
has_many :workouts, :through => :workout_exercises
end
class WorkoutExercise < ActiveRecord::Base
belongs_to :exercise
belongs_to :workout
end
我正在进行一些测试,但是当我创建一个训练、练习并将它们组合在训练练习类中时,测试不通过。无法像这样访问训练中的练习:
Workout.create
Exercise.create
WorkoutExercise.create(:workout => Workout.first, :exercise => Exercise.first)
work = Workout.first
work.exercises.count #This line causes the error: undefined method exercises
我的数据库表长这样:
class CreateWorkouts < ActiveRecord::Migration
def change
create_table :workouts do |t|
t.string :title
t.text :description
t.float :score
t.timestamps
end
end
end
class CreateExercises < ActiveRecord::Migration
def change
create_table :exercises do |t|
t.string :title
t.text :description
t.float :value
t.timestamps
end
end
end
class CreateWorkoutExercises < ActiveRecord::Migration
def change
create_table :workout_exercises do |t|
t.timestamps
end
end
end
当我运行这个测试时,它显示
exercises
未定义。有人有任何想法吗?
rake db:reset
可以完成这项工作(但它会删除所有记录)。 - Ashitaka