2011-01-31 47 views
2

迁移文件中,什么是“:dependent”选项用于,此选项可能的值是什么?每个价值是什么意思?有人可以向我解释吗?迁移“:从属”选项

例如这里使用:dependent => :delete

def self.up 
    create_table :car, :id => false do |t| 
     t.integer :brand_id, :null =>false 
     t.timestamp :buy_at, :null => false 

    end 

    add_index :car, :brand_id 
    add_foreign_key :car, :brands, :dependent => :delete 
    end 

def self.down 
    drop_table :balance_updated 
end 

回答

0

在 “正常” 的Rails中,:dependent选项在模型使用像这样:

has_many :models, :dependent => :destroy 

不过,我认为你正在使用的foreign_key_migrations插件? 如果是这样,看看this source code line知道:dependent选项正在做什么。

0

FOREIGN KEY是用于将两个表连接在一起的键。

FOREIGN KEY是一个表中引用另一个表中的PRIMARY KEY的字段(或字段集合)。 Reference

所以该车的列brand_id是该品牌的表因(主键)通常会(如果你使用的是默认轨数据库sqlite3的默认命名)被称为brand_id。

因此,这可以确保如果从品牌表中删除梅赛德斯品牌,那么在车表中标记为梅赛德斯的所有车型也将被删除。