2015-09-07 42 views
0

我是rails新手,並構建了一個應用程序來從外部網站獲取json數據並將其保存在數據庫中。 JSON的具有在用戶以下字段:rails創建具有子屬性的模型

{ 「ID」:, 「名」: 「」, 「用戶名」: 「」, 「電子郵件」: 「」, 「地址」:{ 「街頭」: 「」, 「套裝」: 「」, 「城市」: 「」, 「郵政編碼」: 「」, } 「手機」: 「」, 「網站」: 「」 },

我知道如何使用名稱,用戶名和電子郵件創建用戶模型。但是,如何添加具有多個子屬性的地址。我沒有看到「陣列」作爲選擇創建模型的選項。 預先感謝您。

回答

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 
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 ::協會:: CollectionProxy「對象,在這裏您將能夠重複:

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

要在管理這個通過執行以下查詢的SSE形式,你可以按照本指南:https://github.com/nathanvda/cocoon/wiki/A-guide-to-doing-nested-model-forms

+0

我不確定是否需要創建兩個不同的模型(用戶和User_address),因爲每個用戶都有唯一的ID,名稱,用戶名,電子郵件,地址,電話和網站。我想我可以添加地址作爲屬性,並使用街道,套件,城市郵編作爲地址屬性的數組。 –

相關問題