migration
別のテーブルを参照して、Rails でa を作成したい。通常、私は次のようなことをします:
add_column :post, :user, :references
これにより、テーブルで名前が付けられた列が作成さuser_id
れposts
ます。しかし、 の代わりに のuser_id
ようなものが必要な場合はauthor_id
どうでしょうか? どうやってやるの?
migration
別のテーブルを参照して、Rails でa を作成したい。通常、私は次のようなことをします:
add_column :post, :user, :references
これにより、テーブルで名前が付けられた列が作成さuser_id
れposts
ます。しかし、 の代わりに のuser_id
ようなものが必要な場合はauthor_id
どうでしょうか? どうやってやるの?
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"
手動で行います:
add_column :post, :author_id, :integer
しかし、belongs_to ステートメントを作成するときは、それを変更する必要があるため、次のように呼び出す必要があります。
def post
belongs_to :user, :foreign_key => 'author_id'
end