144

migration別のテーブルを参照して、Rails でa を作成したい。通常、私は次のようなことをします:

add_column :post, :user, :references

これにより、テーブルで名前が付けられた列が作成さuser_idpostsます。しかし、 の代わりに のuser_idようなものが必要な場合はauthor_idどうでしょうか? どうやってやるの?

4

6 に答える 6

258

Rails 4.2+では、db に外部キーを設定することもできます。これは素晴らしいアイデアです。

単純な関連付けの場合、これは のt.references追加foreign_key: trueでも実行できますが、この場合は 2 行が必要になります。

# The migration
add_reference :posts, :author, index: true
add_foreign_key :posts, :users, column: :author_id

# The model
belongs_to :author, class_name: "User"
于 2015-04-11T12:27:29.747 に答える
65

手動で行います:

add_column :post, :author_id, :integer

しかし、belongs_to ステートメントを作成するときは、それを変更する必要があるため、次のように呼び出す必要があります。

def post
    belongs_to :user, :foreign_key => 'author_id'
end
于 2012-12-04T01:28:41.547 に答える