поэтому у меня две модели:
class User < ActiveRecord::Base
has_and_belongs_to_many :followed_courses, :class_name => "Course"
end
class Course < ActiveRecord::Base
has_and_belongs_to_many :followers, :class_name => "User"
end
в User.rb, у меня также есть:
def following_course?(course)
followed_courses.include?(course)
end
def follow_course!(course)
followed_courses<<course
end
def unfollow_course!(course)
followed_courses.delete(course)
end
У меня нет модели курсы_пользователей, только таблица соединений (курсы_пользователей). Я думаю, мне придется следовать / отменить курс в CoursesController. Создать новое действие в контроллере?
Прямо сейчас, у меня есть форма для подписки на странице курсов / шоу, когда курс не отслеживается
= form_for @course, :url => { :action => "follow" }, :remote => true do |f|
%div= f.hidden_field :id
.actions= f.submit "Follow"
А у меня в CoursesController:
def follow
@course = Course.find(params[:id])
current_user.follow_course!(@course)
respond_to do |format|
format.html { redirect_to @course }
format.js
end
end
Но похоже, что он никогда не был активирован. Нужно ли изменить маршрут, чтобы действие было активировано? Как это изменить? Или есть лучший способ сделать это? Могу ли я заменить форму просто ссылкой? Заранее спасибо!
Это продолжение связанного вопроса Реализация полиморфной модели рельсов