我正在构建一个应用程序,要求用户安排与导师的约会/对话时间。我很难建立这个。我一直在阅读 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
当我转到位于导师请求/new.html.erb 的视图并尝试提交请求时,它说导师 ID 必须存在并且内容必须存在。我尝试使用来自导师显示页面的模式视图创建请求,但内容没有保存,我验证存在必须是真实的,然后当它重定向到导师_requests/new.html.erb 导师 ID 不再存在.
我不知道我是否提供了足够的信息,但我在这里非常需要帮助。如果我走在正确的道路上,我需要做什么才能让它发挥作用,如果这一切都是错误的,我该怎么做才能得到我想要的。
非常感谢
裘德