私は私のレールアプリにインポートしたMYSQLでいくつかのオープンgovデータを使用しています。ActiveRecord双方向外部キー。
私は自分のテーブルのいくつかを使ってデータベースを拡張し、テーブルに列IDを提供しました。
ただし、元のデータベースのテーブルは一意の「ndb」IDでリンクされています。
:foreign_key=>'ndb'
モデル間で2つのテーブルを相互参照すると、テーブルが正しくリンクされると思っていましたが、:foreign_key
によって、別のテーブルのIDと1つのテーブルのIDをリンクしているようです。
私のモデルは「NDB」欄は、食品と重みテーブルとの間のリンクではなく、NDBするfood_idであることを指定する方法があります。この
class Food < ActiveRecord::Base has_many :weights, :foreign_key=>'ndb' has_many :food_names end class Weight < ActiveRecord::Base belongs_to :food, :foreign_key=>'ndb'
のように見えますか?
私はそれを試していませんでしたが、他のクエリで_idフィールドを使用する必要があります。なぜなら、 'ndb'フィールドを通してすべてがリンクされているわけではないからです。私は標準のレールIDを使用していますが、時には 'ndb to ndb'にリンクする必要があります – pedalpete
よく、それらを必要とするテーブルに対してset_primary_keyを使用して、 find()のように動作します。また、関連付けのデフォルトを設定します。 – noodl
申し訳ありませんが、私は明らかではないかもしれません。食べ物のテーブルのようなものは、idフィールドを70%の時間(レールの基準に固執する)、もう一方の30%の時間を使用して、その食物テーブルをndbフィールドの重みのような別のテーブルにリンクする必要があります。モデル上でset_primary_keyを設定すると、それらの関係の70%が破損します。私は何か他のものが欠けていない限り。 'ndb'をプライマリキーに設定すると、IDが2つのテーブルをfood_idに接続できないようです – pedalpete