2011-01-24 59 views
3

我正在使用Rails 2.3.5和AR-extensions 0.9.3警告:不能批量分配這些受保護的屬性:id(ar-extensions)

我試圖從一個表中批量插入到位於不同服務器/數據庫上的另一個表。我不想要任何重寫。在新表格末尾插入一個簡單的插入就足夠了。

我注意到,我得到這樣的警告消息: 警告:不能批量分配這些受保護的屬性:id

我以前的條目被覆蓋..所以我如何解決此問題?

謝謝!

編輯:想出來。看起來像我所需要的是定義一個我想要的屬性數組(排除id)並將其饋送到導入函數中。

更新:

tableA_items.each {|item| item.id=nil} 

注:

tableA_items = TableA.find(:all) 

TableB.establish_connection("other_server") 
TableB.import tableA_items 
+0

你可以發佈你使用的代碼嗎? – 2011-01-24 23:17:40

回答

1

這個bug存在於ar-extensions(它被修復到0.9.5)a nd activerecord-import(最多可修復0.2.7)。

ar-extensions用於Rails 2.x. Rails 3.x應該使用activerecord-import。他們支持相同的API。

0

當使用activerecord-import 0.2.7 + Rails 3.0.7,但是從外部XML文件導入數據時,仍然會看到同樣的錯誤。這是整個事情(作爲Rails遷移;我不知道該如何運行它):

require 'open-uri' 

artists = Array.new 
Artist.establish_connection("http://localhost:3000") 

begin 
    open("*some-url*") do | artists_file | 
    artists_file.each do | line | 
     if line =~ /<artist id="([\w_]*)" name="(.*)"[ <]/ 
     puts $1, $2 

     if line =~/sort="(.*)"/ 
      puts $1 
     end 

     begin 
      artist = Artist.new(:id => $1, :name => $2) 
      artists << artist 
     rescue 
      puts "Couldn't add " + $1 + ": " + $! 
     end 
     end 
    end 

    Artist.import artists, :validate => true 
    end 
rescue 
    puts "Couldn't open the artists file." 
end 

編輯:從來沒有;問題是我明確地試圖設置ID值。 D'哦!

相關問題