Rails 3.0.0rc - ActiveRecord :: Base.class_name - PullRequest
       1

Rails 3.0.0rc - ActiveRecord :: Base.class_name

0 голосов
/ 12 августа 2010

В проекте Rail 3 у меня есть скрипт:

<%= javascript_tag do -%>
  var columns = new Array();
  <% for table in @tables -%>
    <% for column in ActiveRecord::Base.const_get(ActiveRecord::Base.class_name(table)).columns -%>
      columns.push(new Array('<%= table %>', '<%= column.name %>'));
    <% end -%>
  <% end -%>
  function mergeTableSelected() {
    var o = $('select#merge_table option:selected');
    $('th select option').remove();
    $('th select').each(function(i, select) {
      select.options.add(new Option());
      $.each(columns, function(j, column) {
        if (o.text() == column[0]) {
          select.options.add(new Option(column[1]));
        }
      });
    });
  }
<% end -%>

После обновления с 3.0.0.beta4 до 3.0.0.rc я получаю:

undefined method `class_name' for ActiveRecord::Base:Class

Что теперь делать?

Ответы [ 2 ]

2 голосов
/ 18 августа 2010

Я решил проблему с:

...
<% klass = table.to_s.classify %>
<% for column in ActiveRecord::Base.const_get("#{klass}").columns %>
...
1 голос
/ 18 августа 2010

Они удалили его из Rails 3RC:
http://github.com/rails/rails/commit/735a4db6854e73e871e6b01ec003f0670cc5ee14

Не знаю почему, но вы, вероятно, можете просто использовать другой подход в представлении ... похоже, что вы вытягиваете все таблицы в своем проекте, так что вы можете превратить строку в константу и вызвать .columns этой константы :

  <% @tables.each do |table| %>
    <% table.classify.constantize.columns.each do |column| %>
      columns.push(new Array('<%= table %>', '<%= column.name %>'));
    <% end %>
  <% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...