我是rails的新手并构建一个应用程序来从外部网站获取json数据并将其保存在数据库中。 json在User下有以下字段:
{ “ID”: , “名称”: ” ”, “用户名”: ” ”, “email”:“”, “地址”: { “街道”:“”, “套房”:“”, “城市”:“”, “邮政编码”: ” ”, } “电话”: ” ”, “网站”:“” },
我知道如何使用名称,用户名和电子邮件创建用户模型。但是如何添加具有多个子属性的地址。我没有看到“数组”作为创建模型的选项。 先感谢您。
答案 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