динамическое добавление пользовательских полей в модель - PullRequest
2 голосов
/ 28 апреля 2010

У меня есть модель с именем List, в которой много записей:

class List
 has_many :records
end

class Record

end

Запись таблицы имеет 2 постоянных поля: имя, адрес электронной почты.
Помимо этих 2 полей, для каждого Списка у Записи может быть 'n' настраиваемые поля.

Например: для list1 я добавляю адрес (текст), dob (дата) в качестве пользовательских полей. Затем при добавлении записей в первый список каждая запись может иметь значения для адреса и адреса.

Есть ли плагин ActiveRecord, который обеспечивает этот тип функциональности?
Или вы могли бы поделиться своими мыслями о том, как смоделировать это?

Заранее спасибо,
Панкай

Ответы [ 3 ]

2 голосов
/ 28 апреля 2010

Вам стоит взглянуть на решения для баз данных без схемы. Тот, который я считаю великолепным, это mongoDB .

Существует railscast , объясняющий, как использовать его с рельсами. Посмотрите, это прекрасно работает.

2 голосов
/ 28 апреля 2010

Если ваши настраиваемые поля не обязательно должны быть реальными столбцами базы данных, вы можете использовать serialize : http://railsapi.com/doc/rails-v2.3.5/classes/ActiveRecord/Base.html#M000924 Вы можете использовать его как:

class Record < ActiveRecord::Base
  serialize :custom_fields, Hash
end

r = Record.create :custom_fields => {:name => 'John Doe', :birth_date => Date.new(1970,1,1)}

r.custom_fields[:name]
# => 'John Doe'

r.custom_fields[:birth_date]
# => #<Date: 4881175/2,0,2299161>

Pro : простота использования

Con : поскольку пользовательские поля не являются столбцами БД, вы не можете найти записи в БД на основе их значений (например, Record.find_by_name ('John Doe') не работает)

1 голос
/ 28 апреля 2010

Может быть, это? has_magic_columns . Я не проверял это сам, но похоже, что он может делать то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...