[前][次][番号順一覧][スレッド一覧]

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