Создайте пользовательские атрибуты, используя хэш - Rails - PullRequest
1 голос
/ 02 марта 2012

Мой профиль перенесен так:

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 отношение.

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

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

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

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

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

1 Ответ

2 голосов
/ 02 марта 2012

Для 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] }
...