Метапрограммирование в Ruby On Rails - PullRequest
0 голосов
/ 29 июня 2011

У меня есть массив строк: ["users", "torrents", "comments"] эти строки являются именами моих таблиц bd.

как я могу в цикле .each подключиться к этим таблицами выберите | вставить некоторые данные?

1 Ответ

6 голосов
/ 29 июня 2011

Избегайте использования eval

вот простое решение с использованием constantize

примечание: constantize не позволит оценивать произвольный код, он просто попытается получить константу ruby, а именно Class

["users", "torrents", "comments"].each do |table_name|
  # "users" => "User"
  #   or more complex
  # "some_models" => "SomeModel"
  #
  class_name = table_name.singularize.camelize

  # "User" => User
  model_class = class_name.constantize

  # do something with it
  model_class.create!(:value => 12345)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...