0

Я пишу gem rails4, где я могу добавить динамические атрибуты, которые не будут сохраняться в фактической таблице моделей, а скорее сохранятся в моей второй таблице со ссылкой.Setters from Rails4 InstanceMethods для несуществующих полей

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

can't write unknown attribute 

Код

self[attr_name.to_sym]=attr_type[:default_value] 

Просьба советы по этому вопросу, как сделать сеттеры от метода экземпляра для несуществующих полей.

Я использовал instance_variable_set для того же класса ClassMethods.

ответ

0

Вы можете использовать attr_accessor метод для этой цели в своей модели.

class Sample << ActiveRecord::Base 

    attr_accessor :attr_name 

    #setter method 
    def attr_name=(val) 
    self[:attr_name] = val 
    end 

    #getter method 
    def attr_name 
    self[:attr_name] 
    end 
end 

Теперь вы можете вызвать любой метод экземпляра, например, следующий.

self[attr_name.to_sym]=attr_type[:default_value]