here açıklamaları, stream_for
numaralı belgenin yalnızca bir kaydı geçerken kullanıldığını, ancak belgelerin genel olarak oldukça belirsiz olduğunu ima etmektedir. Herkes stream_from
ve stream_for
arasındaki farkları açıklayabilir mi ve neden birini diğerinden kullanırsınız?ActionCable'da "stream_from" ve "stream_for" arasındaki fark nedir?
5
A
cevap
7
stream_for
, stream_from
'un kolayca bir sarmalayıcı yöntemidir.
Belirli bir modelle ilişkili bir akışa ihtiyaç duyduğunuzda, stream_for
otomatik olarak sizin modelinizden ve kanalınızdan yayın üretir.
Diyelim ki ChatRoom
sınıfın bir chat_room
örneği olduğunu varsayalım
stream_from "chat_rooms:#{chat_room.to_gid_param}"
veya
stream_for chat_room # equivalent with stream_from "chat_rooms:Z2lkOi8vVGVzdEFwcC9Qb3N0LzE"
iki satır aynı şeyi yapar.
0
https://github.com/rails/rails/blob/master/actioncable/lib/action_cable/channel/streams.rb
neredeyse Tamam, ama önek CHANNEL_NAME bağlıdır değil modeli sınıfı.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
da basitçe kanal adını ekler stream_for
basit dize iletebilirsiniz.
'to_gid_param' parçasının noktası nedir? Sadece chat_room _ # {{params [: chat_room_id]} 'deme? –
Sadece rastgele bir dizeyi geçerli bir boşluk olmayan dize olarak kodlamak için mi? Yoksa arkasında başka bir fikir var mı? –
'stream_for, güncellemeler istediğimiz belirli bir kayıt (veya kayıt ve ilişkilendirme) olduğunda kullanılır. Davlumbazın altında Action Cable, bu kayıt için ya da bu kayıt ve ilişkilendirmesi için benzersiz bir dizgi oluşturuyor ve daha sonra stream_for [sic - muhtemelen 'stream_from' olmalıdır] yöntemini çağırıyor. Kaynak: https://www.sitepoint.com/action-cable-ve-websockets-derinlemesine-öğretici/ –