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... ]