【问题标题】:Interacting with two models - generating api ruby on rails与两个模型交互 - 在 Rails 上生成 api ruby
【发布时间】:2018-09-14 18:20:49
【问题描述】:

我正在尝试创建一个 api rails 应用程序,但遇到了一些问题。

我有两个模型

  • 具有以下属性的商店 name:string, localisation:text, size:integer

  • 具有以下属性的员工 name:string social_number:integer age:integer shop:references

一个 Shop 可以有多个引用,所以我考虑在 Employe 模型中使用 belongs_to 并在 Shop 模型中使用 has_many

我正在尝试创建以下请求 POST /shops

响应应显示以下有关商店的数据

{
  name: String, 
  localisation: text,  
  age: integer,  
  employees: List[employee]  
}

关于员工的数据

{
  name: String,
  social_number: integer,
  age:integer
}

我知道我可以写Shop.employees.create(name: "Yves", social_number: "12342323", age: 29) 并且我可以看到它在数据库中有效。

但是当我在 create 函数中编写 post 请求时,如何在 body 响应中显示员工属性?我只能显示商店的属性,即名称、本地化、年龄。

感谢belongs_to 关联,我在Employees 表中有shop_id,但Shop 表中没有任何内容。如何制作链接以显示属于商店的员工特征?

我正在使用 Rails。

谢谢大家,很抱歉发了这么长的帖子。

如果我不清楚,请告诉我。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    就我个人而言,我会使用不同的 API 调用来创建商店和员工。所以调用它来创建一个商店,并取回商店ID。然后在以下调用中使用此商店 ID 来创建员工。

    或者,创建具有多个员工的商店,将员工属性作为数组发送到创建商店请求中。

    {
      name: String, 
      localisation: text,  
      age: integer,  
      employees: [
        {
          name: String,
          social_number: integer,
          age:integer
        },
        {
          name: String,
          social_number: integer,
          age:integer
        }
      ]
    }
    

    响应应该相似,但带有 id。

    {
      id: integer,
      name: String, 
      localisation: text,  
      age: integer,  
      employees: [
        {
          id: integer,
          name: String,
          social_number: integer,
          age:integer
        },
        {
          id: integer,
          name: String,
          social_number: integer,
          age:integer
        }
      ]
    }
    

    员工散列可以选择性地包含 shop_id 属性。它不会伤害任何东西。

    【讨论】:

      猜你喜欢
      • 2013-04-18
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 2017-10-19
      • 2013-04-23
      相关资源
      最近更新 更多