Как мне получить динамический доступ к атрибутам экземпляра ActiveRecord? - PullRequest
0 голосов
/ 20 января 2012

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

Как выполучить доступ к записи модели, когда имя поля находится в переменной

Обычный доступ -

var = model.field_name

Но в моем коде я хотел бы сделать что-то подобное

replacement_tags.each do |tag|
  content = content.gsub(/tag/, model.|access attribute with same name as tag|
end

поэтому, если бы тегами были имя, фамилия, блок будет запускать gsub для model.firstname и model.lastname последовательно.

Я не возражаю, если я поступлю неправильно, есликакой-то способ достичь этих результатов

1 Ответ

3 голосов
/ 20 января 2012

Когда вы вызываете методы экземпляра в Ruby, вы ничего не вызываете, вы отправляете сообщения получателю.

user.first_name можно прочитать как «отправить сообщение»к этому user объекту, который просит его вернуть свое имя "

С этим знанием и этой документацией вы можете легко написать свой код как

replacement_tags.each do |tag|
  content = content.gsub(/tag/, model.send(tag.to_sym))
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...