2017-03-02 4 views
0

名前の末尾が_idであるかどうかを尋ねる以外にも、ActiveRecordの属性が外部キーであるかどうかテストできますか?

上記の方法で属性をテストするとすれば、それは一般化可能でしょうか?私の現在のユースケースでは、そうすることで十分です。しかし、代替宇宙では、私が鍛えているツールの宝石を作りたいと思うかもしれません。私は実際に_idで終わらない外部キーを持つモデルを設定したい人を推測しています。 D-Sidethisに私を指摘:

慣例により、Railsはこのモデルの外国 キーを保持するために使用されるカラムは_id が追加接尾語との関連の名前であることを前提としています。 :foreign_keyオプションは、

誰かが目のオプションで行っているケースを検出する方法はあり直接外国 キーの名前を設定することができますか?

答えて

1

次のようなもので外部キーのリストを得ることができる必要があります:あなたは、多くの場合、それをやろうとしている場合は

all_reflections = self.class.reflections. 
         select{ |n, r| r.macro == :belongs_to }. 
         map{ |name, reflection| reflection.foreign_key } 

私は結果をキャッシュします

関連する問題