0
У меня есть метод, как это:Как присвоить значение столбца с помощью строки
class MyClass < ActiveRecord::Base
def assign_weighted_values
unless foo.nil?
self.weighted_foo = 3 * foo
end
unless bar.nil?
self.weighted_bar = 3 * bar
end
unless hoge.nil?
self.weighted_hoge = 3 * hoge
end
end
end
Но я хочу, чтобы написать это как:
def assign_weighted_values
%w(foo bar hoge).each do |column|
next if send(column).nil?
self.send("weighted_#{column}") = 3 * column
end
end
Есть ли способ, чтобы назначить значение в столбце с помощью String?
несколько опечаток в сторону, ваш код уже делает это - что еще вы хотите? –
@FrederickCheung мой код заканчивается 'синтаксической ошибкой, неожиданным '=', ожидающим ключевое слово_end' – ironsand
, что происходит потому, что вы устанавливаете метод« getter »для ваших атрибутов. self.send ("weighted _ # {column}") просто выберет значение этого атрибута. поэтому знак равенства перед этим выдает ошибку. Что вам нужно сделать, это вызвать метод «сеттер». Например, self.send ("weighted _ # {column} =", "value-you-want-to-set") – Atul