【问题标题】:Create Rails Schema from JSON Variable从 JSON 变量创建 Rails 模式
【发布时间】:2017-09-27 01:46:43
【问题描述】:

是否可以如何从 JSON 变量生成 Rails 架构?

我正在寻找这样的 JSON 变量:

{
"employees":[
    {"firstName":"John", "lastName":"Doe"}, 
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]
}

拥有一个名为 Employee 的模型,其中包含 2 个字段:firstNamelastName

【问题讨论】:

  • 好吧,当然可以。然而,这些问题对于 stackoverflow 来说是题外话。但是,如果您展示您尝试解决的问题以及遇到的问题,可能会成为话题。
  • 您实际上想要完成什么?正如冰人所说,你可以并不意味着你应该这样做。
  • 您使用的术语架构完全错误。 Schema 表示数据库列的规范。有点像数据库表的蓝图。您想要的是从 JSON 将记录插入数据库。巨大的差异。
  • max:不,我不是。我不想插入值,我想创建 schmea。我认为你误读了这个问题
  • 那么这是一个绝对可怕的想法。如果要存储任意结构,请使用 Postgres 中的 JSON 类型列或 MongoDB 等 nosql 数据库。

标签: ruby-on-rails json postgresql activerecord


【解决方案1】:

您不会在关系数据库中动态生成模式。即使它可以四处游荡并解析 JSON 并使用它来创建 SQL 语句,例如:

CREATE TABLE 'employees' ...

这并不是构建 Web 应用程序的智能方式。它会产生大量潜在的安全问题,而且不健全或不可维护。

它违反了您应该使用 ActiveRecord 的整个方式 - 将架构构建到适用于问题域的模型的迁移。

如果您想在 Postgres 中使用任意模式存储数据,请使用 JSON 类型列。

create_table :employees do |t|
  t.json 'data'
end

这将使您可以在employees.data 中存储您想要的任何内容。

【讨论】:

  • 我不想动态生成架构
猜你喜欢
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 2022-07-18
  • 1970-01-01
  • 2017-01-14
相关资源
最近更新 更多