sha*_*esh 7 ruby-on-rails ruby-on-rails-3
使用t.references和执行SQL命令在products和categorytable 之间创建外键关系有什么区别,如下所示?换句话说,两种不同的方式做同样的事情还是我错过了什么?
class ExampleMigration < ActiveRecord::Migration
def up
create_table :products do |t|
t.references :category
end
#add a foreign key
execute <<-SQL
ALTER TABLE products
ADD CONSTRAINT fk_products_categories
FOREIGN KEY (category_id)
REFERENCES categories(id)
SQL
add_column :users, :home_page_url, :string
rename_column :users, :email, :email_address
end
def down
rename_column :users, :email_address, :email
remove_column :users, :home_page_url
execute <<-SQL
ALTER TABLE products
DROP FOREIGN KEY fk_products_categories
SQL
drop_table :products
end
end
Run Code Online (Sandbox Code Playgroud)
我在这个页面中发现了一些有趣的事情。
http://railsforum.com/viewtopic.php?id=17318
来自评论:
Rails 不使用外键来执行后端任务。这是因为某些数据库(例如 sqlite)不允许在其表上使用外键。所以 Rails 不提供构建外键的帮助器
还有一个 gemforeigner用于向数据库表添加外键。 是什么在 Ruby on Rails 3 中创建了 FOREIGN KEY 约束?
| 归档时间: |
|
| 查看次数: |
4738 次 |
| 最近记录: |