Если я определяю модель Customer
и Order
, в которой a Customer
"имеет много" Orders
, а Order
"принадлежит" Customer
, в Rails мы говорим о Order
имея внешний ключ от Customer
до customer_id
, но мы не имеем в виду, что это применяется в базе данных.
Поскольку Rails не определяет это как ограничение на уровне базы данных, существует риск нарушения целостности данных, возможно, вне приложения (или внутри, если вы получаете одновременные запросы?), если только вы не применяете ограничение в базе данных вручную.
Почему Rails не определяет внешний ключ на уровне базы данных или есть способ получить Rails для этого?
class Customer < ActiveRecord::Base
has_many :orders
end
class Order < ActiveRecord::Base
belongs_to :customer
end
ActiveRecord::Schema.define(:version => 1) do
create_table "customers", :force => true do |t|
t.string "name"
end
create_table "orders", :force => true do |t|
t.string "item_name"
t.integer "customer_id"
end
end