【发布时间】:2015-11-25 01:35:44
【问题描述】:
我按照下面链接中的答案在我的 Rails 4 应用程序上设置了 many_to_many 关系。 (这里是 Rails 新手。) Implement "Add to favorites" in Rails 3 & 4
我有用户和练习,我希望用户能够拥有最喜欢的练习。我创建了一个名为 FavoriteExercise 的连接表,其中 user_id 和 exercise_id 作为列。我已经填充了它,它似乎工作正常,但我无法使用它直接调用我的收藏夹。
意思是,我想输入:
user.favorite = #已收藏的练习列表
当我尝试在浏览器中加载该列表时出现此错误:
SQLite3::SQLException: no such column: exercises.favorite_exercise_id:
SELECT "exercises".* FROM "exercises" INNER JOIN "favorite_exercises"
ON "exercises"."favorite_exercise_id" = "favorite_exercises"."id"
WHERE > "favorite_exercises"."user_id" = ?
我的模型:
class User < ActiveRecord::Base
has_many :workouts
has_many :exercises
has_many :favorite_exercises
has_many :favorites, through: :favorite_exercises, source: :exercises
class Exercise < ActiveRecord::Base
belongs_to :user
has_many :workouts, :through => :exercises_workouts
has_many :favorites
has_many :favorited_by, through: :favorite_exercises, source: :exercises
class FavoriteExercise < ActiveRecord::Base
has_many :exercises
has_many :users
我刚刚尝试将 FavoriteExercise 切换为“belongs_to”而不是“has_many”,因为这似乎是应该采用的方式?但后来我得到了这个错误:
uninitialized constant User::Exercises
只是想弄清楚如何设置表格和关联,以便我可以调用用户的 .favorites 并获取他们所有的收藏夹。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 many-to-many has-many-through