Я выполнил ответ, указанный ниже по ссылке, чтобы настроить отношения many_to_many в моем приложении Rails 4. (Новое для рельсов, здесь.) Implement "Add to favorites" in Rails 3 & 4Rails 4 has_many: через связь с: source
У меня есть пользователи и упражнения, и я хочу, чтобы пользователи могли иметь любимые упражнения. Я создал таблицу соединений с именем FavoriteExercise с user_id и exercise_id как столбцы. У меня это заселение, и, похоже, он работает нормально, но я не могу использовать его для прямого звонка в избранное.
Значение, я хочу, чтобы напечатать:
user.favorite = #list упражнений, которые были Избраного
Я получаю эту ошибку, когда я пытаюсь загрузить этот список в моем браузере:
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 в «Белу ngs_to 'вместо' has_many, потому что, похоже, это путь, который должен идти? но потом я получаю эту ошибку:
uninitialized constant User::Exercises
Просто пытаюсь выяснить, как настроить таблицы и ассоциаций, так что я могу назвать .favorites на пользователя и получить все свои любимые.
Ну, я надеялся, чтобы иметь возможность иметь оба следующие: '' 'user.exercises = # все упражнения, созданные пользователем''', и ' '' user.favorites = # все упражнения, назначенные пользователем''' , поэтому я имел '' 'has_many: exercise''' отдельно от' '' has_many: favorites' '' – Riley
Я изменил код в соответствии с тем, что вы ввели. '' 'Users.exercises''' возвращает упражнения, которые имеют user_id, связанный с моим пользователем, а не с упражнениями из таблицы FavoriteExercises, которые связаны с моим user_id – Riley
, и я по-прежнему получаю ту же ошибку SQL от пользователя '' '.избранное''' – Riley