2014-07-25 51 views
0

我有以下車型(含關聯):Rails中創建給出嵌套屬性關聯

Page has_and_belongs_to_many Dimension 

我有一組在我的應用程序定義維度:

{id:1, width: 20, height:30} 
{id:2, width: 40, height:60} 
{id:3, width: 100, height:150} 

當用戶創建一頁,我想讓他設置一系列尺寸,例如:

Page.create({:page_name => 'test', :dimensions_attributes => [{:width => 20, :height => 30}, {:width => 40, height: 60}]) 

這種方法的問題是它會在我的數據庫中創建一個新的維度記錄,我不想那麼做。我想創建方法去嘗試找到提供的寬度和高度的尺寸。

我該怎麼做?

回答

2

我想你應該在你的模型是,添加的東西的方法是這樣的:

def add_dimensions=(dimensions_attributes) 
    dims.each { |attrs| dimensions << Dimension.find_or_create_by!(attrs) } 
end 

然後,你需要在你的電話更換爲:dimensions_attributes:add_dimensionsPage.create

+0

rabusmar,很有意思,但是我在哪一點叫這種方法?當我做''Page.create({:page_name =>'test',:dimensions_attributes => [{:width => 20,:height => 30},{:width => 40,height:60}])) ''它會自動創建尺寸。我如何避免這種情況發生? –

+0

查看編輯答案 – rabusmar

+0

噢,真好。我懂了。謝謝!說得通。我會試試 –