如何访问与 JSON:API 序列化程序的关系

How to access relationship with JSON:API serializer

提问人:Unik6065 提问时间:9/16/2023 更新时间:9/16/2023 访问量:57

问:

我目前正在开发一个使用 ruby on rails 和 React 的评论系统。一切正常,我的用户可以发表评论,产品可以收到评论。但现在我有一个问题。 这是我的三个模型:

产品

class Product< ApplicationRecord
  has_many :comments
end

用户

class User < ApplicationRecord
  has_many :comments
end

和评论

class Comment < ApplicationRecord
  belongs_to :Product
  belongs_to :user
end

现在,我想使用 JSONAPI::Serializer 在产品页面上显示呈现产品。

因此,我调用 ProductSerializer:

 def show
    render json: ProductSerializer.new(@product, { include: [:comments] })
  end

下面是 ProductSerializer:

class ProductSerializer
  include JSONAPI::Serializer
  attributes :id, :created_at, :description
  has_many :comments
end

(我在这里关注了github上的官方文档:https://github.com/jsonapi-serializer/jsonapi-serializer)

所以现在的问题是:为什么 JSON 响应不包含注释?我也试过:

class ProductSerializer
  include JSONAPI::Serializer
  attributes :id, :created_at, :description
  has_many :comments, serializer: CommentSerializer
end

但它仍然不起作用......如果我在序列化程序的属性中包含注释,如下所示:

class ProductSerializer
  include JSONAPI::Serializer
  attributes :id, :created_at, :description, :comments
end

我确实收到了评论列表,但我得到的不是 User 对象,而是User_id,这不是我想要的。

我正在使用 rails 7.0.6 和 jsonapi-serializer 2.2.0

Ruby-on-Rails rails-activerecord jsonapi-serialize

评论

0赞 max 9/16/2023
belongs_to :product- 除了 ClassNames 和 CONSTANTS 之外,Rails(以及一般的 Ruby)中的所有内容都应该snake_case。这包括您的关联名称。
0赞 Unik6065 9/17/2023
是的,没错,但它仍然不起作用

答: 暂无答案