可以将counter_cache与store_accessor一起使用吗?

时间:2017-03-10 14:39:16

标签: ruby-on-rails ruby-on-rails-5

我有一个jsonb columndata),我使用store_accessor定义属性,如下所示:

class Post < ApplicationRecord
  has_many :comments
  store_accessor :data, :comments_count
end

class Comment < ApplicationRecord
  belongs_to :post, counter_cache: true
end

有没有办法使用Rails&#39; counter_cache,将计数保存在按上述定义的属性中?

1 个答案:

答案 0 :(得分:0)

请注意,store_accessor适用于adding additional accessors to an existing store。如果您要定义商店,则应使用以下内容:

class Post < ApplicationRecord
  store :data, :comments_count
  # store :data, accessors: [ :comments_count ], coder: JSON
end

您需要在关联的belongs_to大小上指定counter_cache。

没有试过这个,但是怎么样?

class Comment < ApplicationRecord
  belongs_to :post, counter_cache: :comments_count
end

编辑:

或者

class Comment < ApplicationRecord
  belongs_to :post, counter_cache: stored_attributes[:comments_count]
end