Если мое приложение использует AJAX для отправки message
пользователя на серверный speak
метод, который не нуждается в контроллере (и, следовательно, нет места для записи before_filter
), как бы я реализовал поведение что ограничивает users
, не являющихся частью этого conversation
, отправлять сообщения через консоль браузера?
Если я открываю свое приложение и набираю App.messages.speak("hi", #guess random number#)
, это сообщение отправляется в беседу, независимо от того, являются ли они его частью.
messages_channel.rb
class MessagesChannel < ApplicationCable::Channel
def speak(data)
Message.create! body: data['body'], conversation_id: data['conversation_id'], user_id: current_user.id
end
end
messages.coffee
App.messages = App.cable.subscriptions.create "MessagesChannel",
speak: (body, conversation_id) ->
@perform 'speak', body: body, conversation_id: conversation_id
submit_message = () ->
$('#response').on 'keydown', (event) ->
if event.keyCode is 13
conversation_id = $("[data-conversation-id]").data("conversation-id")
App.messages.speak(event.target.value, conversation_id)
event.target.value = ""
event.preventDefault()
Я думаю, что могу удалить параметр conversation_id
из метода speak
и установить его в другом месте, кроме t зависит от ввода пользователя? В настоящее время я настроил его как атрибут данных, что означает, что люди все еще могут с ним связываться.