2010-08-12 24 views
0

在軌道3的項目,我有一個劇本:Rails的3.0.0rc - 的ActiveRecord :: Base.class_name

<%= 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

我的問題解決了:

... 
<% klass = table.to_s.classify %> 
<% for column in ActiveRecord::Base.const_get("#{klass}").columns %> 
... 
1

他們刪除它從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 %> 
+0

我更新d我的解決方案與另一種可能工作的方法(取決於@tables是什麼),而不使用ActiveRecord :: Base方法 – johnmcaliley 2010-08-17 23:40:18