2

Synchromesh で Reactive Record の関連付けを更新するにはどうすればよいですか?

次のモデルを検討する場合:

# models/public/post.rb
class Post < ActiveRecord::Base
  has_many :comments
end

# models/public/comments.rb
class Comment < ActiveRecord::Base
  belongs_to :post
end

すべての投稿とコメントをレンダリングするコンポーネント:

def render
  ul do
  Todo.all.each do |todo|
    li { todo.title }
    ul do
      todo.things.each do |thing|
        li { thing.name }
      end
    end
  end
end

私が見ている動作は、投稿またはコメントへの更新がクライアントに正しくプッシュされ、コンポーネントが更新を正しくレンダリングすることです。

ただし、新しい Thing が作成された場合 (Todo がレンダリングされている場合)、新しいレコードはプッシュ通知として届きますが、Thing のリストは動的に更新されません。(ページを更新すると、新しい Thing がレンダリングされます)。

Todo にスコープを追加しようとしましたが、違いはありません。

scope :all_with_things, -> () { joins(:things) }, [Thing]

Todo に属する新しい Thing を ReactiveRecord と Synchromesh に認識させる最良の方法は何ですか?

4

1 に答える 1

1

私は答えを出したと信じています。コレクションをレンダリングするときは、スコープを使用する必要があります。

したがって、モデルでは:

# models/public/comments.rb
class Comment < ActiveRecord::Base
  belongs_to :post
  scope :for_post, -> (post_id) { where(post_id: post_id)  }
end

そして、コレクションをレンダリングするとき:

Todo.all.each do |todo|
    li { todo.title }
    ul do
      Comment.for_post(post.id).each do |comment|
        li { comment.body }
    end
  end
end

そして、それはすべて機能します。

于 2016-08-23T11:16:39.923 に答える