3
таблицы
Настройки из схемы:Определение методов класса внутри активного класса записи
таблицыcreate_table "settings", :force => true do |t|
t.string "name"
t.string "value"
t.datetime "created_at"
t.datetime "updated_at"
end
Настройки имеет следующие записи:
{name: "notification_email", value: "[email protected]"}
{name: "support_phone", value: "1234567"}
Я хочу функция Setting.notification_email вернуть "привет @ monkey.com "и соответственно Setting.support_phone функция для возврата" ".
Вот что у меня в setting.rb:
class Setting < ActiveRecord::Base
class << self
all.each do |setting|
define_method "#{setting.name}".to_sym do
setting.value.to_s
end
end
end
end
Но тогда, когда я вхожу Setting.notification_email в консоли, он дает мне ошибку:
NameError: undefined local variable or method `all' for #<Class:0x000000053b3df0>
from /home/adam/Volumes/derby/app/models/setting.rb:7:in `singletonclass'
from /home/adam/Volumes/derby/app/models/setting.rb:2:in `<class:Setting>'
from /home/adam/Volumes/derby/app/models/setting.rb:1:in `<top (required)>'
...
'define_singleton_method' для 1.9. Эквивалент в 1.8 - это 'self.class.instance_eval' в сочетании с' define_method', как и раньше. Приятно, что это было очищено. – tadman