rails创建具有子属性的模型

时间:2015-09-07 20:29:20

标签: ruby-on-rails json

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

{     “ID”: ,     “名称”: ” ”,     “用户名”: ” ”,     “email”:“”,     “地址”: {       “街道”:“”,       “套房”:“”,       “城市”:“”,       “邮政编码”: ” ”,       }     “电话”: ” ”,     “网站”:“”     },

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

2 个答案:

答案 0 :(得分:0)

我想你可以试试这个:

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

答案 1 :(得分:0)

您可以通过将地址与用户关联来实现此目的。

首先,你应该创建一个名为user_address的新模型,其中包含你想要的属性:

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

在您的user_address.rb文件中:

belongs_to :user

然后,在你的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