当前位置: 首页 > 知识库问答 >
问题:

rails使用子属性创建模型

傅砚
2023-03-14

我是新来的rails和建立一个应用程序,从外部网站获取json数据,并将其保存在数据库中。json在User下有以下字段:

{“id”:“姓名”:“用户名”:“电子邮件”:“地址”:{“街道”:“套房”:“城市”:“邮编”:“}”电话::“网站”:“}”,

我知道如何创建一个用户模型与名称,用户名和电子邮件。但是我如何添加具有多个子属性的地址。我没有看到“数组”作为创建模型的选项。提前谢谢你。

共有2个答案

许自强
2023-03-14

我想你可以试试这个:

class NameOfYourMigration < ActiveRecord::Migration

  def change
    add_column :your_models, :address, :text
  end

end

class YourModel < ActiveRecord::Base 
 serialize :address, Hash  # if your variable is a Hash
 serialize :address, Array # or for an Array
end
包子航
2023-03-14

您可以通过将地址关联到用户来实现这一点。

首先,您应该创建一个名为user_address的新模型,例如,具有您想要的属性:

rails g model user_address address:string number:integer user_id:integer

在您的用户地址上。rb文件:

belongs_to :user

然后,在您的用户中。您应该添加的rb文件

has_many :user_addresses

完成此操作后,您将能够通过执行以下查询访问所有用户的地址:

user.user_addresses

这将为您提供一个“ActiveRecord::Associations::CollectionProxy”对象,您可以在其中迭代

user.user_addresses.each do |address_instance|
  puts address_instance.address+"#{ address_instance.number}"
end

要在窗体中管理它,您可以遵循以下指南:https://github.com/nathanvda/cocoon/wiki/A-guide-to-doing-nested-model-forms

 类似资料:
  • 安装和生成后,目录名或artifactid中不使用moduleName值,则重新生成的值为 该值在项目的一些其他文件上被正确替换,所以我猜没有拼写问题。 我见过很多类似的东西,但都是使用rootArtifactId,事实上,如果我使用rootArtifactId(作为名称的开始部分),它就会像预期的那样工作。 找不到类似的问题,有什么想法为什么它不能工作,或如何使它工作?

  • 我试图提供一种方法,在一个模型中生成一个新对象(列表),在另一个模型中使用has_many关系(通过分组)生成一个新的关联对象(项目)。我能够让表单工作正常,但无法弄清楚为了正确完成创建过程,我缺少什么。 Rails v.5.1.2,Ruby v.2.4.1 lists_controller.rb items_controller.rb list.rb模型 item.rb模型 grouping.r

  • OrientDB中的属性就像数据库表中的类和列的字段。 创建属性是用于为特定类创建属性的命令。 在命令中使用的类名必须存在。 以下语句是创建属性命令的基本语法。 以下是有关上述语法中选项的详细信息。 - 定义要在其中创建属性的类。 - 定义属性的逻辑名称。 - 定义您想要创建的属性的类型。 - 定义容器属性类型中使用的容器类型。 - 定义容器属性类型中使用的容器类。 下表提供了属性的数据类型,以便

  • 我正在使用本文概述的typescript实现mongoose模型:https://github.com/Appsilon/styleguide/wiki/mongoose-typescript-models 我也不确定在处理子文档数组时这是如何翻译的。假设我有以下模型和模式定义: 将向user.pet子文档添加新宠物的代码: 在查看链接之后,这似乎是处理子文档所必需的理想方法。但是,此场景似乎会引

  • 我正在注入这样一个脚本: 这会生成如下标记: 我更喜欢以下语法: 将选项传递给jQuery DOM元素创建者时是否支持此功能?或者,我应该只使用普通JavaScript来实现这一点吗?

  • 问题内容: 我想使用Django模板发送HTML电子邮件: 我找不到任何有关的信息,而django-mailer仅发送HTML模板,而没有动态数据。 如何使用Django的模板引擎生成电子邮件? 问题答案: 从docs,要发送HTML电子邮件,你想使用其他内容类型,如下所示: 你可能需要两个用于电子邮件的模板-一个看起来像这样的纯文本模板,存储在你的模板目录下: 还有一个HTMLy,存放在以下位置