标签: fastjsonapi

Rails:NameError(未初始化的常量 UserSerializer)

我目前正在使用 Rails 6.0 构建一个仅限 Rails API 的应用程序。我正在使用fast_jsonapi进行 JSON:API 序列化 Ruby 对象。现在我只创建了UsersController.

我有一个user具有以下属性的模型:

ActiveRecord::Schema.define(version: 2020_03_14_175719) do
 create_table "users", force: :cascade do |t|
    t.string "first_name"
    t.string "last_name"
    t.string "username"
    t.string "password_digest"
    t.string "email"
    t.string "phone"
    t.text "address"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["username"], name: "index_users_on_username", unique: true
  end
end
Run Code Online (Sandbox Code Playgroud)

user_serializer为它创建了一个:

class UserSerializer
  include FastJsonapi::ObjectSerializer
  attributes :first_name, :last_name, :username, :password, :email, …
Run Code Online (Sandbox Code Playgroud)

serialization ruby-on-rails fastjsonapi

8
推荐指数
1
解决办法
2175
查看次数

如何获取fast_jsonapi返回关系的属性

我有一个带有由fast_jsonapi gem序列化的模型的Rails api。

我的模型如下所示:

class Shift < ApplicationRecord
  belongs_to :team, optional: true
  ...
Run Code Online (Sandbox Code Playgroud)
class Team < ApplicationRecord
  has_many :shifts
  ...
Run Code Online (Sandbox Code Playgroud)

这就是序列化器的样子

class ShiftSerializer
  include FastJsonapi::ObjectSerializer
  ...
  belongs_to :team
  ...
end
Run Code Online (Sandbox Code Playgroud)

序列化工作。但是,即使我包含复合团队文档:

def index
  shifts = policy_scope(Shift).includes(:team)
  options = {}
  options[:include] = [:team, :'team.name', :'team.color']
  render json: ShiftSerializer.new(shifts, options)
end
Run Code Online (Sandbox Code Playgroud)

我仍在像这样格式化对象:

...
relationships: {
  team: {
    data: {
      id: "22",
      type: "Team"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

而我期望也能获得团队模型的属性。

ruby ruby-on-rails fastjsonapi

5
推荐指数
1
解决办法
1320
查看次数

如何在 FastJsonAPI 中将参数从控制器传递到序列化器?

我有一个控制器方法drop_down_values,在其中选择一组值并以 json 响应,使用序列化器构建对象。我正在使用 FastJson Api。我想知道,如何访问序列化器中控制器中存在的其他变量。

def drop_down_values   
    @drop_down_values = IndustrySectorList.all
    @values = @drop_down_values.pluck(:industry_sector)
    render json: DropDownValueSerializer.new(@drop_down_values).serialized_json
end
Run Code Online (Sandbox Code Playgroud)

我需要@values在序列化器中使用该变量。我如何将其传递给序列化器?我无法在序列化器中直接访问此变量。

序列化器:

class DropDownValueSerializer
  include FastJsonapi::ObjectSerializer
  attributes :id
  end
Run Code Online (Sandbox Code Playgroud)

堆栈和版本 -

  1. 导轨 - 5.2.1
  2. 红宝石 - 2.5.1
  3. FastJsonAPI - 1.5

serialization ruby-on-rails json-api ruby-on-rails-5.2 fastjsonapi

3
推荐指数
1
解决办法
3372
查看次数