Я создаю приложение, которое требует от пользователей планирования времени встреч/бесед с наставниками. Я с трудом выстраиваю это. Я читал об ассоциации has_many :through =>, но я знаю, что поступаю неправильно.
В моем User.rb
Class User < ActiveRecord::Base
has_many :mentor_requests, foreign_key: "user_id"
has_many :mentors, through: :mentor_requests
def requested?(mentor)
mentor_requests.find_by_mentor_id(mentor.id)
end
def request!(mentor_request)
mentor_requests.create!(mentor_request)
end
def unrequest!(mentor)
mentor_requests.find_by_mentor_id(mentor.id).destroy
end
end
В моем Mentor.rb
class Mentor < User
has_many :mentor_requests, foreign_key: "mentor_id"
has_many :users, through: :mentor_requests
end
В Mentor_request.rb
class MentorRequest < ActiveRecord::Base
attr_accessible :reason, :mentor_id
belongs_to :user, class_name: "User"
belongs_to :mentor, class_name: "Mentor"
validates :user_id, :mentor_id, presence: true
validates :reason, presence:true, length: { maximum: 140 }
default_scope order: 'mentor_requests.created_at DESC'
end
В моих запросах контроллер
def create
@mentor_request = current_user.mentor_requests.build(params[:mentor_request])
#current_user.request!(@mentor)
if @mentor_request.save
flash[:success] = "Your request has been sent"
redirect_to user_path(current_user)
#Send confirmations to both user and mentor
#Send the notification to an internal message inbox
else
render "new"
end
end
Когда я перехожу к просмотру mentor_requests/new.html.erb и пытаюсь отправить запрос, он говорит, что должен присутствовать mentor_id и должен присутствовать контент. Я попытался создать запрос, используя модальное представление на странице показа наставника, но содержимое не сохраняется, и я проверяю, что присутствие должно быть истинным, а затем, когда он перенаправляется на mentor_requests/new.html.erb, идентификатор наставника больше не присутствует .
Я не знаю, представил ли я достаточно информации, но мне здесь очень нужна помощь. Если я на правильном пути, что мне нужно сделать, чтобы это заработало, и если все это неправильно, что мне сделать, чтобы получить то, что я хочу.
Большое спасибо
Джуд