Attr_accessor и subclass

Рейтинг: 1Ответов: 1Опубликовано: 08.09.2014

Есть модель User и у нее два подкласса Developer и Buyer (дочерние модели).
В каждой дочерней модели есть константа FIELDS.

В модели User:

class User < ActiveRecord::Base
  attr_accessor *:get_fields

  after_initialize :get_additional_fields

  # выбираю FIELDS для текущего класса
    def self.get_fields
      Object.const_get( self.name )::FIELDS
    end

  # устанавливаю изначальные значения
  # для дополнительных полей
  #
    def get_additional_fields
      self.country = 'text'
    end
end

Получаю ошибку NoMethodError: undefined methodcountry=' for #<Developer:`

Подскажите, что не так?

Ответы

▲ 1

Зачем тебе SomeClass.get_fields, если то же самое ты можешь получить с помощью SomeClass::FIELDS? Или это ты так решил поиграть в инкапсуляцию, типо "true" OOP?

attr_accessor *:get_fields

Что это вообще за синтаксическая конструкция? Если понаобъявлять полей, то почему не

attr_accessor *FIELDS

self.get_additional_fields

Задаёшь поля, а метод назвал get_. Не по христу. А надо бы set_. Кроме того, непонятно зачем вообще нужен этот метод.