rails:1705
From: hoti <hoti_jp@y...>
Date: Thu, 12 Oct 2006 00:12:47 +0900 (JST)
Subject: [rails:1705] Re: リレーションシップの外部参照 id が使えない
真中さん、ありがとうございます。
FKが必要なんですね。どこかの記事で、「FKなしでidのみでOK」なんて勘違いしていました。
マニュアルを見ると、しっかり foo_id の列を作っていました。しっかり確認しないといけませんで
した_O_
ところで、FKを使うのと、下のように"普通の列"とするのと基本的に同じ、という認識でよいのでし
ょうか?
ーーーーー
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)
)
-------------------------------
こんにちは、manakayと申します。
> 早速ですが、下のようなモデルを使って、1対1のリレーションを使おうとしています。
>
> class Article < ActiveRecord::Base
> has_one :comment
> end
>
> class Comment < ActiveRecord::Base
> belongs_to :article
> end
CommentはArticleにbelongしているわけですから、CommentテーブルにはFKが必要です。
ただのidキーはRailsではレコードのインスタンスを表すポインタみたいなものなので、article_idが
必要です。article_idをテーブルに使えない理由でもあるのでしょうか。
> PPS 下のようなコードだと、エラーは発生しません。
> class Article < ActiveRecord::Base
> has_one :comment
> :foreign_key => "id"
> end
Articleの主キーをFKにも指定しているので、いつかおかしなことになりそうな気がします。1対1なの
で動くことは動くでしょうけど。それになにより気持ち悪いですよね。
article_idを使えないのなら、なにか別名のキーを用意して、それを:foreign_keyで指定してやれば
いいと思います。
--------------------------------------
[10th Anniversary] special auction campaign now!
http://pr.mail.yahoo.co.jp/auction/
--
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... ]