在我的 Rails 应用程序中,评论属于页面(并存储页面 ID),而页面有很多评论。但现在我希望 Comment 也属于另一个模型,比如 Picture。 Railscasts Polymorphic associations讨论如何最初将 Commentable 设置为 Comment 与其所属模型之间的中介。
但是,我已经有一个现有的评论 - 页面设置。如何将数据库列和数据迁移到新的可评论设置,以免出现任何中断?
最佳答案
试试这个:
将列 page_id
重命名为 commentable_id
并创建一个名为 commentable_type
的附加列,并将其设置为默认值:“page”,以便上一个列表中数据是合适的。
迁移应该是:
1) 将 page_id 重命名为 commentable_id 的迁移
class RenameColumnPageIdToCommentableIdInComments < ActiveRecord::Migration
def up
rename_column :comments, :page_id, :commentable_id
end
def down
rename_column :comments, :commentable_id, :page_id
end
end
2)添加commentable_type的迁移
class AddColumnCommentableTypeToComments< ActiveRecord::Migration
def up
add_column :comments, :commentable_type, :string, default: 'Page'
end
def down
rename_column :comments, :commentable_type,
end
end
然后,您将需要更改注释和 View 的 Controller 代码。 希望有帮助:)
关于ruby-on-rails - 如何更改现有的评论模型,使其可以属于许多不同的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26923487/