В моем проекте у меня есть две модели: ответчик (который в основном является сообщением) & Разговор. Ответчик - ребенок Разговора. Я хочу, чтобы, если пользователь создает нового ответчика, он автоматически создает беседу для этого ответчика. В разговоре есть только идентификатор.При создании ребенка также создайте родителя
Если администратор затем отвечает на этом ответчике, этот_ответчик для этого ответчика будет таким же, как и ответчик пользователя.
Так что я хочу:
- Пользователя/администратор создает ответчик (ребенок), а также создать разговор (родительский)
- Администратора/пользователь использует кнопку ответа, conversation.id из ответчика ответил на это прошло на нового ответчика.
Я немного оглянулся и нашел некоторые подобные вопросы. Но они не совсем то, что я хочу, и я не могу понять, как построить вокруг него, чтобы он работал на меня. Я чувствую, что это очень простая вещь, но я действительно не знаю, как и с чего начать.
Conversation.rb:
class Conversation < ActiveRecord::Base
has_many :responders
end
Responder.rb:
class Responder < ActiveRecord::Base
validates :title, :text, presence: true
has_many :receivers
belongs_to :company
belongs_to :user
belongs_to :conversation
end
и мой контроллер ответчики может это поможет:
class RespondersController < ApplicationController
before_action :all_responders, only: [:index, :create]
before_action :check_user
respond_to :html, :js
def show
@responder = Responder.find(params[:id])
end
def new
#@conversation = Conversation.new
#@conversation.save #Works, but puts data in database before submitting the form
@responder = Responder.new
end
def create
@responder = Responder.new(responder_params)
if @responder.save
redirect_to root_path
else
render partial: "form", errors: responder.errors.full_messages
end
end
private
def check_user
if !signed_in?
redirect_to new_session_path
end
end
def all_responders
if current_user
@companies = Company.all
if current_user.administrator?
@responders = Responder.where.not(:user_id => current_user.id)
else
@responders = Responder.where(:receiver => current_user.id)
end
end
end
def responder_params
params.require(:responder).permit(:title, :text, :receiver, :sender_id, :company_id, :user_id, :conversation_id)
end
end
Почтовая система уникальна, где есть администратор, который отправляет письма как несколько компаний (из выпадающего списка), и пользователи могут отправлять почту только на c п е к т. Я также не хочу использовать камни для этого.
Заранее благодарен!
Спасибо большое! Не знал, что это можно сделать так легко. Я сделал это, нажав кнопку 'reply',' chat_id' передается в 'link_to' в' new_responder_path' и помещается в скрытую форму, если таковая имеется. Затем в модели я проверяю с обратным вызовом 'before_create' еще раз, если передается цепочка session_id, если она не создается. Похоже, теперь он отлично работает, спасибо! – Tijmenh