Я искал несколько вопросов о миграции и их ответах, но не нашел удовлетворительного решения.
Я хочу использовать простые отношения has_many и own_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
Я все еще надеюсь найти более элегантное решение. Может быть, для этого есть драгоценный камень.