Я использовал одну таблицу с одной строкой, и каждый столбец представлял одно предпочтение. Это позволяет иметь разные типы данных.
Чтобы иметь возможность получить предпочтение, я переопределил method_missing
, чтобы иметь возможность получить значение предпочтения непосредственно из имени класса, не требуя экземпляра, что-то вроде этого:
class Setting < ActiveRecord::Base
@@instance = self.first
def self.instance
@@instance
end
def self.method_missing(method, *args)
option = method.to_s
if option.include? '='
var_name = option.gsub('=', '')
value = args.first
@@instance[var_name] = value
else
@@instance[option]
end
end
end
Таким образом, чтобы получить настройку, вы должны использовать:
a_setting = Setting.column_name