我有一个jsonb column(data
),我使用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
,将计数保存在按上述定义的属性中?
答案 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