1

У меня есть профиль миграции, как это:Создание определяемых пользователем атрибутов с помощью хэш - Рельсы

class CreateProfiles < ActiveRecord::Migration 
    def self.up 
    create_table :profiles do |t| 
     t.integer :user_id 
     t.text :detail 
     t.boolean :visible 
     t.timestamps 
     end 
    add_index :profiles, :detail 
    end 

    def self.down 
    drop_table :profiles 
    end 
end 

И у меня есть User has_one Profile и Profile belongs_to User Relation.

Теперь я хочу сохранить данные профиля как сериализованные. Поэтому у меня есть класс профиля, как это:

class Profile < ActiveRecord::Base 
    belongs_to :user 
    serialize :detail, Hash 
end 

Это потому, что я хочу, чтобы каждый пользователь мог создавать различные данные профиля, что-то вроде этого

Profile.new.detail ={:education => ["Degree", true], :Hobby => ["Music", false] } 

Теперь, так как у меня user_id имеет другой атрибут, какую команду я могу использовать для добавления пользователями новых сведений?

ответ

2

Для Profile has_many Details:

p = Profile.new 
p.detail = [] 
p.detail << {:'Linked In Profile' => ["link", false]} 
p.detail << {education: [...]} 

Для Profile has_one Detail:

Profile.new.detail = { :Education => ["Degree", true], :'Linked In Profile' => ["link", false] } 
+0

Спасибо, Profile.new.detail = {: образование => [ "", правда]: Город => [ "Cook ", false]} это работает, но hw я могу сохранить user_id вместе с ним, так как каждый пользователь будет иметь отдельные атрибуты профиля! –

+0

вы хотите, чтобы «Профиль» имел много «деталей»? Каждый из них имеет атрибуты «Профиль»? – farnoy

+0

'Profile.new.detail = {education: true, user_id: @ user.id}', но я не знаю, зачем вам это делать. – farnoy