rails:1707
From: manakay <manaka.y@g...>
Date: Thu, 12 Oct 2006 00:56:30 +0900
Subject: [rails:1707] Re: リレーションシップの外部参照 id が使えない
> ところで、FKを使うのと、下のように"普通の列"とするのと基本的に同じ、という認識でよいのでし > ょうか? Railsでリレーションシップを設定できるのは、ActiveRecordのオブジェクト間のリンク宣言だけです(つまり、has_one, has_many, habtmなど)。DDLでのFK指定は、Railsにとっては意味はありません。もちろん、データベースが参照先のキーをチェックしてくれるのでDDLでFK指定したほうがいいとは思いますが。 前のメールで私がFKと書いたのは、Railsが認識する参照キー、「モデル名_id」のことであって、データベースの外部キー制約のことではありません。報知さんが読まれた「FKなしでidのみでOK」という記事でいうFKは、このデータベースの外部キー制約のことを指しているのだと思います。つまりDDLでFK指定をしなくとも、オブジェクトレベルでリレーションシップを設定することができて、それは規約に従えば「モデル名_id」でOKだということを言っているのだと思います。 Railsでリレーションシップを設定するのならば、下記のやり方でOKです。というか、下記のやり方が一般的だと思います。 > ーーーーー > class User < ActiveRecord::Base > # I reference an account. > belongs_to :account > end > > class Account < ActiveRecord::Base > # One user references me. > has_one :user > end > > The tables for these classes could look something like: > > CREATE TABLE users ( > id int(11) NOT NULL auto_increment, > account_id int(11) default NULL, > name varchar default NULL, > PRIMARY KEY (id) > ) > > CREATE TABLE accounts ( > id int(11) NOT NULL auto_increment, > name varchar default NULL, > PRIMARY KEY (id) > ) -- ML: rails@r... 使い方: http://QuickML.com/
1705 2006-10-11 17:12 [hoti_jp@y... ] Re: リレーションシップの外部参照 id が使えない -> 1707 2006-10-11 17:56 ┗[manaka.y@g... ]