【发布时间】:2018-07-30 02:24:46
【问题描述】:
我有一个用户和推荐模型。用户有几种帐户类型:学生、管理员、推荐人等。学生用户可以分配推荐人来提交推荐。我没有使用 Rolify 所以
我目前有:
class Recommendation < ApplicationRecord
belongs_to :assigner, class_name: "User", foreign_key: "user_id"
belongs_to :writer, class_name: "User", foreign_key: "writer_id"
end
class User < ApplicationRecord
has_many :recommendations_via_assigning, class_name: "Recommendation", foreign_key: :assigner_id
has_many :recommendations_via_writing, class_name: "Recommendation", foreign_key: :writer_id
end
class CreateRecommendations < ActiveRecord::Migration[5.1]
def change
create_table :recommendations do |t|
t.integer :writer_id, foreign_key: true
t.integer :assigner_id, foreign_key: true
t.text :text
t.timestamps
end
add_index :recommendations, :writer_id
add_index :recommendations, :assigner_id
end
end
控制器
def new
@recommendation = current_user.recommendations_via_assigning.build
end
def create
@recommendation = current_user.recommendations_via_assigning.build(recommendation_request_params)
if @recommendation.save
@recommendation.send_invitation_email
flash[:info] = "An email with submission instructions has been sent to the recommender you have invited."
redirect_to user_url
else
render 'new'
end
end
private
def recommendation_request_params
params.require(:recommendation).permit(:assigner_id, :first_name, :last_name, :email, :relationship)
end
def recommendation_content_params
params.require(:recommendation).permit(:writer_id, :first_name, :last_name, :email, :text)
end
我无法保存推荐,因为它需要 writer_id,在提交 Recommendation#create 时不会知道该推荐。需要做的是向提供的电子邮件地址发出一封电子邮件,邀请教师创建一个帐户,当该帐户注册时,通过 id 和教师帐户的 writer_id 进行推荐。
如何修改现有代码,以便在没有 writer_id 的情况下通过推荐#create?
【问题讨论】:
标签: ruby-on-rails associations