2013-07-30 57 views
1

可以說我有一個名爲Building的模型和另一個名爲Issue的模型。Rails - 一次向所有模型添加新記錄

Issuebelongs_toBuilding

Buildinghas_manyIssues

我有多個Buildings,許多Issues。現在,我必須每次將每個問題添加到每個建築物。

如何在同一時間向所有Buildings添加一個Issue

+0

假設您已將所有建築物都有相同的問題x。如果您將一個x問題更改爲y,那麼是否將所有建築物的問題更改爲y? –

+0

是的,我會說這將是它應該工作的方式。 – Devin

回答

3

似乎你需要在兩個模型中的has_and_belongs_to_many關係。並創建一個表爲:

rails g migration create_buildings_issues building_id:integer issue_id:integer 

編輯遷移刪除自動索引,並添加複合索引:

create_table :buildings_issues, index: false do |t| 
    t.references :building 
    t.references :issue 
end 
add_index :buildings_issues, [:building_id, :issue_id] 

然後在數據庫中創建該表:

rake db:migrate 

然後,你可以添加問題到多個建築物:

any_issue.buildings << Building.all 

或向任何建築物添加問題:

any_building.issues << heat_issue 
+0

這很有道理,我會嘗試一下。我想補充的一個難題是:我希望能夠爲'建築物'添加單個「問題」。換句話說,如果我還想把「熱」作爲一個問題添加到「3號樓」,但不是所有其他建築物,我是否可以通過has_and_belongs_to關聯來實現? – Devin

+0

是'building_3.issues << heat_issue' – juanpastas

+0

是代表'issues'的'items'嗎?或者實際上應該是「物品」?我有點困惑'項目'來自 – Devin

相關問題