2015-09-20 2 views
1

User.rbRails: Создание метода для сохранения столбца базы данных динамически

def save_to_db(column_name) 
     column = (column_name + "_data") 
     self.column = "blah blah blah" 
    end 

например

Если я позвонил save_to_db («полоса»), я намерен сохранить «blah blah blah» в столбце user.stripe_data.

Но у меня возникли проблемы с преобразованием строки в метод, который я могу вызвать для самостоятельного сохранения в БД.

ответ

1

Предполагая, что я правильно понял ваш запрос, вы можете использовать метод []=

def save_to_db(column_name) 
    self["#{column_name}_data"] = "blah blah blah" 
end 

или использовать send.

def save_to_db(column_name) 
    self.send("#{column_name}_data=", "blah blah blah") 
end 

Другой подход, который минует сеттеров является использование write_attribute непосредственно. Но вы можете использовать этот метод только внутри самой модели.

def save_to_db(column_name) 
    self.write_attribute("#{column_name}_data", "blah blah blah") 
end 
+0

Отлично! спасибо –

Смежные вопросы