У меня есть следующие две переменные:
a = 1;
b = 'a';
Я хочу быть в состоянии сделать
SOMETYPEOFEVALUATION(b) = 2;
, так что значение переменной a
теперь установлено на 2
.
a # => 2
Возможно ли это?
В частности, я работаю с Facebook API. Каждый объект имеет различные связи (друзья, лайки, фильмы и т. Д.). У меня есть класс анализатора, который хранит состояние последнего вызова API Facebook для всех этих соединений. Эти состояния называются в соответствии с GET, который вам нужно вызвать, чтобы обновить их.
Например, чтобы обновить подключение Music, вы используете https://graph.facebook.com/me/music?access_token=... Я сохраняю результат в переменной с именем updated_music. Для книг, его updated_books. Если бы я создал список всех этих имен типов соединений, в идеале я бы хотел сделать что-то вроде этого.
def update_all
connection_list.each do |connection_name|
updated_SomeTypeOfEvalAndConcatenation(connection_name) = CallToAPI("https://graph.facebook.com/me/#{connection_name}?access_token=...")
end
end
Очень плохо знаком с Rails и StackOverflow, поэтому, пожалуйста, дайте мне знать, если есть лучший способ следовать любым соглашениям.
попробовал ниже.
class FacebookParser
attr_accessor :last_albums_json,
def update_parser_vars(service)
handler = FacebookAPIHandler.new
connections_type_list = ['albums']
connections_type_list.each do |connection_name|
eval "self.last_#{connection_name}_json = handler.access_api_by_content_type(service, #{connection_name})['data']"
end
#self.last_albums_json = handler.access_api_by_content_type(service, 'albums')['data']
end
end
И я получаю эту ошибку
undefined local variable or method `albums' for #<FacebookParser:0xaa7d12c>
Работает нормально, когда я использую закомментированную строку.