移行に関するいくつかの質問とその回答を検索しましたが、満足のいく解決策が見つかりませんでした。
次のような単純な has_many および belongs_to 関係を使用したい
class User < ActiveRecord::Base
has_many :posts
has_many :comments
end
class Post < ActiveRecord::Base
belongs_to :user
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post
belongs_to :user
end
次のような移行内でデータベースレベルの制約を作成する可能性はありますか?
post_id integer REFERENCES posts
または、これを手動で行う必要がありますか?せいぜい、データベースに依存しないソリューションを好むでしょう。前もって感謝します!
編集:私は現在 Postgresql を使用していますが、基盤となるデータベースに関しては柔軟に対応したいと考えています。
更新:データベースに依存しないコードのために、現時点では次の移行に固執します。
class AddRelations < ActiveRecord::Migration
def self.up
add_column :posts, :user_id, :integer, :null => false
add_column :comments, :user_id, :integer, :null => false
add_column :comments, :post_id, :integer, :null => false
end
def self.down
remove_column :posts, :user_id
remove_column :comments, :user_id
remove_column :comments, :post_id
end
end
私はまだよりエレガントな解決策を見つけたいと思っています。多分それのための宝石があります。