Я использую Rails 4 и имею модель Article
, которая имеет answer
, side_effects
и benefits
в качестве атрибутов.Интерполяция ключа атрибута перед сохранением
Я пытаюсь создать метод before_save
, который автоматически смотрит на побочные эффекты и преимущества и создает ссылки, соответствующие другой статье на сайте.
Вместо того, чтобы писать два практически одинаковых метода, один для побочных эффектов и один для преимуществ, я хотел бы использовать тот же метод и проверить, чтобы атрибут не был равен answer
.
До сих пор у меня есть что-то вроде этого:
before_save :link_to_article
private
def link_to_article
self.attributes.each do |key, value|
unless key == "answer"
linked_attrs = []
self.key.split(';').each do |i|
a = Article.where('lower(specific) = ?', i.downcase.strip).first
if a && a.approved?
linked_attrs.push("<a href='/questions/#{a.slug}' target=_blank>#{i.strip}</a>")
else
linked_attrs.push(i.strip)
end
end
self.key = linked_attrs.join('; ')
end
end
end
, но сцепление на ключе, как это дает мне undefined method 'key'
.
Как я могу использовать интерполяцию в атрибуте?
То есть именно то, что мне нужно .. спасибо очень много. И я хотел бы выполнить этот метод по всем атрибутам, отличным от ответа ... вот почему я зацикливаюсь. Thx снова! @Taryn – Kathan
ah cool right - это было непонятно из приведенного кода. Рад, что это помогло :) –
Еще один вопрос для вас, прежде чем я приму ответ ... как я могу присвоить атрибутам новое значение? 'self.send (key) =" new value "' не работает. – Kathan