2015-09-07 3 views
0

Я новичок в рельсах и создаю приложение для извлечения данных json с внешнего сайта и сохранения его в базе данных. JSON имеет следующие поля под пользователем:рельсы создают модель с дополнительными атрибутами

{ "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 

Как только вы сделаете это, вы сможете получить доступ ко всем пользовательским addre ГСЭС, выполнив следующий запрос:

user.user_addresses 

это даст вам «ActiveRecord :: Ассоциации :: CollectionProxy» объект, где вы сможете итерацию:

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

Чтобы справиться с этим в form, вы можете следовать этому руководству: https://github.com/nathanvda/cocoon/wiki/A-guide-to-doing-nested-model-forms

+0

Я не был уверен, что мне нужно создать две разные модели (User и User_address), поскольку каждый пользователь имеет уникальный идентификатор, имя, имя пользователя, адрес электронной почты, адрес и телефон. Я думал, что могу добавить адрес в качестве атрибута и использовать street, suite, city zipcode в качестве массива для атрибута адреса. –

Смежные вопросы