[英]Rails associations and deletion
我正在通過Rails關聯鏈接 。 但是我不明白該協會是如何運作的。 我正在使用mysql db。
這些是我生成的文件:
user.rb
class User < ActiveRecord::Base
has_many :orders
end
order.rb
class Order < ActiveRecord::Base
belongs_to :user
end
20150911181301_create_orders.rb
class CreateOrders < ActiveRecord::Migration
def change
create_table :orders do |t|
t.string :content
t.integer :user_id
t.timestamps null: false
end
end
end
20150911181351_create_users.rb
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps null: false
end
end
end
首先,我期望db:migrate本身會生成一些外鍵關系,但沒有發生。 然后我認為可能是Rails在內部對其進行管理,但是當我通過rails c
刪除用戶時,它沒有從訂單表中刪除相應的訂單。
我的理解在哪里不正確? 還給我一些鏈接,說明它是如何工作的?
一切都在文檔中
-您應注意,“ 在任何情況下,Rails都不會為您創建外鍵列 。您需要在遷移過程中明確定義它們。”
-您還應該注意,在關聯方面,Rails需要告訴您,與belongs_to
和has_many
相關聯的兩個模型,都希望在刪除其父模型時刪除關聯的模型。 那就是dependent: :destroy
出現的地方。
現在,您需要執行的所有代碼才能使與用戶相關的orders
在以下情況orders
被刪除:
class User < ActiveRecord::Base
has_many :orders, dependent: :destroy
end
來源: Rails指南
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.