如何使数据库结构适应预期 API

How to adapt db structure to the expected API

假设我有一个客户端应用程序,它需要以下 JSON 结构,如图所示。

{'foo': {'bar': '1'}}

我想将相关的数据库结构保留为:

 create_table :foos do |t|
   t.string :baar
 end

所以我想使用 baar 而不是 bar 作为数据库列的名称。您如何看待将这些东西别名为类似的东西:

alias_attribute :bar, :baar

呈现的 json 结构与您使用的数据库结构无关。 attribute_names可以在json渲染函数中设置(可以和底层数据库字段名相同也可以不同)

从 table 结构继续你有:

create_table :foos do |t|
  t.string :baar
end

这将对应于 foo 模型:

class Foo < ActiveRecord::Base
  ..
end

foos_controller.rb 中的 json 呈现函数 - 对于显示操作(例如) - 如下所示:

class FoosController < < ApplicationController

  def show
    @foo = Foo.find(1)

    respond_to do |format|
      format.json { render json: { foo: { baar: @foo.bar } } }
    end
  end
end

在这里,json 属性 - baar 可以是任何东西,并且链接到 foos table 中的 bar 字段。