Opisy wydają się sugerować, że stream_for
jest używany tylko podczas przekazywania rekordu, ale ogólnie dokumentacja jest raczej niejasna. Czy ktoś może wyjaśnić różnice między stream_from
i stream_for
i dlaczego chcesz użyć jednego na drugim?Jaka jest różnica między `stream_from` a` stream_for` w ActionCable?
5
A
Odpowiedz
7
stream_for
to po prostu metoda owijania stream_from
z łatwością.
Gdy potrzebujesz strumienia powiązanego z konkretnym modelem, automatycznie wygenerujesz nadawanie z modelu i kanału.
Załóżmy masz chat_room
wystąpienie ChatRoom
klasie
stream_from "chat_rooms:#{chat_room.to_gid_param}"
lub
stream_for chat_room # equivalent with stream_from "chat_rooms:Z2lkOi8vVGVzdEFwcC9Qb3N0LzE"
dwie linie kodu robi to samo.
https://github.com/rails/rails/blob/master/actioncable/lib/action_cable/channel/streams.rb
0
kevinhyunilkim's answer jest prawie ok, ale przedrostek zależy CHANNEL_NAME, nie klasa modelu.
class CommentsChannel < ApplicationCable::Channel
def subscribed
stream_for article
# is equivalent to
stream_from "#{self.channel_name}:{article.to_gid_param}"
# in this class this means
stream_from "comments:{article.to_gid_param}"
end
private
# any activerecord instance has 'to_gid_param'
def article
Article.find_by(id: params[:article_id])
end
end
można również przekazać prosty ciąg stream_for
który po prostu dodaje nazwę kanału.
Powiązane problemy
- 1. Jaka jest różnica między == a === w Verilog?
- 2. Jaka jest różnica między $ a a $$ a w php?
- 3. Jaka jest różnica między Ember.computed.alias a Ember.binding?
- 4. Jaka jest różnica między pakietem a intencją?
- 5. Jaka jest różnica między krotką a kompresją?
- 6. Jaka jest różnica między uchwytem a wątkiem?
- 7. Jaka jest różnica między cancelBubble a stopPropagation?
- 8. Jaka jest różnica między HAVING a WHERE?
- 9. Jaka jest różnica między użytkownikiem a rolą?
- 10. Jaka jest różnica między StudlyCaps a CamelCase?
- 11. Jaka jest różnica między Const a Constant?
- 12. Jaka jest różnica między @Inject a @PersistenceContext?
- 13. Jaka jest różnica między preferredLocalization a preferredLanguage?
- 14. Jaka jest różnica między JavaBean a POJO?
- 15. Jaka jest różnica między podprocesiem.popen a podprocesią.run?
- 16. Jaka jest różnica między funkcjami a zamknięciami?
- 17. Jaka jest różnica między ramką a ramką?
- 18. Jaka jest różnica między hashowaniem a indeksowaniem?
- 19. Jaka jest różnica między UIViewController a UITableViewController
- 20. Jaka jest różnica między przyszłym a shared_future?
- 21. Jaka jest różnica między tasklet a workqueue
- 22. Jaka jest różnica między Listą a ArrayList?
- 23. Jaka jest różnica między PermGenem a Metaspace?
- 24. Jaka jest różnica między Dispatcher.BeginInvoke a Task.Factory.StartNew
- 25. Jaka jest różnica między SUMĄ a SUBTOTALEM?
- 26. jaka jest różnica między CONTENT_FILTER_URI a CONTENT_URI?
- 27. Jaka jest różnica między process.cwd() a __dirname?
- 28. Jaka jest różnica między ItemTemplate a ItemPanelTemplate?
- 29. Jaka jest różnica między spark.sql.shuffle.partitions a spark.default.parallelism?
- 30. Jaka jest różnica między spin_lock a raw_spin_lock()?
Jaki jest sens części 'to_gid_param'? Nie możesz po prostu powiedzieć 'chat_room _ # {params [: chat_room_id]}? –
Czy służy tylko do kodowania dowolnego ciągu znaków w poprawnym łańcuchu, który nie jest pusty? Czy jest za tym jakiś inny pomysł? –
'stream_for jest używane, gdy istnieje określony rekord (lub rekord i powiązanie), o których chcemy uzyskać aktualizacje. Pod maską Action Cable generuje unikalny ciąg dla tego rekordu lub tego rekordu i jego powiązania, a następnie wywołuje metodę stream_for [sic - prawdopodobnie powinna być "stream_from"]. "Źródło: https://www.sitepoint.com/action-cable-and-websockets-a-in-depth-tutorial/ –