0

我试图弄清楚如何使用这个jsonapi-resources gem,但我发现它非常困难。

假设我刚刚提交了一个对象,例如:

{"name":"My product","price":"15.00"}

但是我想保存在数据库中的是:

{"name":"My Product","price":"15.00","slug":"my-product","series":301234351}

换句话说,我想拦截创建或更新并添加或更改正在发送的数据。

在我的特殊情况下,我得到了一个“类别”模型,如下所示:

控制器

class CategoriesController < ApplicationController
  #before_action :doorkeeper_authorize!
end

模型

class Category < ActiveRecord::Base
  has_many :posts
end

资源

class CategoryResource < JSONAPI::Resource
  attribute :name #,:slug
  has_many :posts
end

路线

jsonapi_resources :categories

例如,如何将 slug、short-name、last_update 添加到 Category 模型(假设它没有被客户端传递)?

4

2 回答 2

1

尝试以下操作:

class CategoryResource < JSONAPI::Resource
  attribute :name #,:slug
  has_many :posts

  before_save do
    # add logic to change or add attributes to model on create/edit 
    # for example
    @model.slug = # logic to assign the slug
    @model.series = # logic to assign the series
  end
end
于 2016-05-14T04:24:39.857 回答
1

我希望,您在数据库中有 slug 列。

class Category < ActiveRecord::Base
  has_many :posts

  before_save do
    self.slug = name.gsub(' ', '-').downcase
  end
end
于 2016-05-14T04:30:51.213 回答