我将表格名称从“地址”更改为“地点”。这是两个模型
class Location < ActiveRecord::Base
has_many :years, dependent: :destroy
has_many :people, through: :years
class Year < ActiveRecord::Base
belongs_to :location
belongs_to :person
我通过rename_table :addresses, :locations
迁移进行了更改,并更改了相关控制器和视图中的文件夹,文件和所有引用的名称。大多数事情似乎都没问题,除了Year数据库在years表中仍然有一列address_id
。它显然需要location_id
。我可以只迁移更改吗?是否会保留指向新命名数据库的链接?我已备份数据库并制作了年份输出的电子表格副本。
该项目的预换版本位于https://bitbucket.org/MtnBiker/crores5/src。我不愿意将更改合并到master中,直到我将其整理出来。
感谢您的建议。
PS。我不建议更改表名,但我在地址表中有一个名为address的字段,希望摆脱这种混乱。不用说,我是新手。
答案 0 :(得分:1)
我认为你要找的是简单地重命名Years
表中的列:
rename_column :table_name, :old_column, :new_column
也许
rename_column :years, :address_id, :location_id
迁移后,years表将包含一个location_id列,该列具有与之前相同的值。
编辑:不要求任何列具有任何特定名称(尽管如果您的应用程序执行“rails方式”操作几乎总是更容易。例如,您可以定义Years模型以引用Location模型一个名称“不正确”的列。
class Year < ActiveRecord::Base
belongs_to :location, foreign_key: :address_id, primary_key: :id