可以說我有一個名爲Building
的模型和另一個名爲Issue
的模型。Rails - 一次向所有模型添加新記錄
Issue
belongs_to
Building
Building
has_many
Issues
我有多個Buildings
,許多Issues
。現在,我必須每次將每個問題添加到每個建築物。
如何在同一時間向所有Buildings
添加一個Issue
?
可以說我有一個名爲Building
的模型和另一個名爲Issue
的模型。Rails - 一次向所有模型添加新記錄
Issue
belongs_to
Building
Building
has_many
Issues
我有多個Buildings
,許多Issues
。現在,我必須每次將每個問題添加到每個建築物。
如何在同一時間向所有Buildings
添加一個Issue
?
似乎你需要在兩個模型中的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
這很有道理,我會嘗試一下。我想補充的一個難題是:我希望能夠爲'建築物'添加單個「問題」。換句話說,如果我還想把「熱」作爲一個問題添加到「3號樓」,但不是所有其他建築物,我是否可以通過has_and_belongs_to關聯來實現? – Devin
是'building_3.issues << heat_issue' – juanpastas
是代表'issues'的'items'嗎?或者實際上應該是「物品」?我有點困惑'項目'來自 – Devin
假設您已將所有建築物都有相同的問題x。如果您將一個x問題更改爲y,那麼是否將所有建築物的問題更改爲y? –
是的,我會說這將是它應該工作的方式。 – Devin