У меня есть одна таблица собственных ссылок для раздела вопросов и ответов о продукте, названная question_and_answers со столбцами: id, parent_id, text_field, user_id и product_id. Вопрос не имеет parent_id, а ответы имеют parent_id вопроса. У пользователя две роли: поставщик и клиент.
Как мне кодировать действие создания для вопроса и ответа в одном действии контроллера, если пользователь с ролью клиента может создать вопрос с nil parent_id, а пользователь с ролью поставщика может создать ответ с parent_id идентификатора вопроса. Я застрял на том, как разрешить клиентам создавать только вопросы, а поставщикам - только ответы. Я использую CanCan для авторизации на основе ролей.
Моя ассоциация такая:
QuestionAndAnswer
belongs_to product, belongs_to user
has_many parent, class_name: QuestionAndAnswer, foreign_key: parent_id
User
has_many question_and_answers
Product
has_many question_and_answers
Мой контроллер такой вот сейчас
class QuestionAndAnswersController < Api::BaseController
def create
@thread = QuestionAndAnswer.new(thread_params)
if @thread.save
render json: @thread, status: :created
else
render status: 422 , json: {
success: false,
message: "Couldn't create thread"
}
end
end
def permitted_params
[:parent_id, :textfield, :product_id, :user_id]
end
def thread_params
params.permit(permitted_params)
end
end
Должен ли я что-то добавить в моем действии контроллера ?? Я сейчас пустой