我正在尋找一種在我的rails應用程序中解決性能問題的好方法。我有三個表格,它們之間有一對一到多個連接。如果我想用第一個表格的130個項目填充下面表格的所有數據,那麼結果大約有1000個查詢,大約需要10秒(SQLite數據庫)。Rails:將大量數據導入到三個連接的表
我發現
accept_nested_attributes_for
聲明,巫婆讓您一行代碼多個表輸入數據。我的問題是,從性能的角度來看,這是一個很好的選擇。有人有任何經驗嗎?
感謝 馬庫斯
我正在尋找一種在我的rails應用程序中解決性能問題的好方法。我有三個表格,它們之間有一對一到多個連接。如果我想用第一個表格的130個項目填充下面表格的所有數據,那麼結果大約有1000個查詢,大約需要10秒(SQLite數據庫)。Rails:將大量數據導入到三個連接的表
我發現
accept_nested_attributes_for
聲明,巫婆讓您一行代碼多個表輸入數據。我的問題是,從性能的角度來看,這是一個很好的選擇。有人有任何經驗嗎?
感謝 馬庫斯
accept_nested_attributes_for添加到的ActiveRecord能夠直接從一個模型寫入關聯的可能性。
爲例: 你有模型,如:
class User
accepts_nested_attributes_for :cars
end
class Car
belongs_to :user
end
和如哈希:
param[:user] = {}
params[:user][:name] = "Mike"
params[:user][:car] = {}
params[:user][:car][:brand] = "Nissan"
User.create(params[:user])
這將創建一個新用戶和新汽車, 沒有accepts_nested_attributes_for:
@user = User.create(params[:user])
@car = Car.create(params[:user][:car])
@user.car = @car
此功能通常在HTML窗體中使用fields_for,因此您可以輕鬆處理創建對象及其關聯。
在你的情況我想,你的模型一樣,(關於你的XML):
class Card
has_one :front_side, :class => "Side"
has_one :back_side, :class => "Side"
end
class Side
belongs_to :card
has_many :card_side_entry
end
class CardSideEntry
belongs_to :side
end
我不知道你的XML來自(您的數據,從中提取?),但我想你可以使用accept_nested_attributes_for,這樣你就可以讓每個卡片散列生成關聯。 但我不確定要了解所有問題,如果這是最佳解決方案
謝謝麥克,是的,我按照你的想象去做。我想知道這個accept_nested_attributes是否有效,確實有很多數據。感謝您的回答 – Markus 2010-02-11 16:24:59
那就是:
Table: cards
front_side_id
back_side_id
Table: card_sides
Table: card_side_entries
card_side_id
我有現在這樣的XML:
<Cards>
<Card>
<FrontSide>
<CardSideEntries>
<CardSideEntrie/>
...
</CardSideEntries>
</FrontSide>
<BackSide>
<CardSideEntries>
<CardSideEntrie/>
...
</CardSideEntries>
</BackSide>
</Card>
...
</Cards>
在我的解決方案,我用線解析整個XML文件中的行,因爲我有時需要一個card_id我必須保存一個特定的表項兩次......現在有人有關於accept_nested_attributes_for的一些信息嗎?
感謝, 馬庫斯
1000查詢?聽起來很奇怪,你能告訴我們表格和你正在查詢的問題的細節, – Mike 2010-02-11 11:49:56