Rails:有没有办法在不修改控制器的情况下重命名列?

时间:2015-02-10 09:26:55

标签: ruby-on-rails

我正在尝试重命名Rails项目中的列,并且我生成了迁移文件和bundle exec rake db:migrate

程序是这样的。

生成文件,

bin/rails g migration RenameUserTwitterNameToName

并使用列名

编写方法
def change
  rename_column :users, :twitter_name, :name
end

最后执行rake任务。

bundle exec rake db:migrate

虽然效果很好,但我需要修改与列相关的控制器。

例如,如果有如下代码,我需要将方法find_by_twitter_name更改为find_by_name

@user = User.find_by_twitter_name(name)

有没有办法自动修改上面的控制器?

1 个答案:

答案 0 :(得分:0)

无法自动修改控制器,但您可以为属性创建别名,包括getter,setter和query方法。

class User < ActiveRecord::Base
    alias_attribute :twitter_name, :name
end

http://api.rubyonrails.org/classes/Module.html#method-i-alias_attribute