a が「多く」、 が「に属する」モデルCustomer
を定義する場合、Rails ではスルーへの外部キーを持つことについて話しますが、これがデータベースで強制されるという意味ではありません。Order
Customer
Orders
Order
Customer
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