Rails中模型的多元化错误

时间:2012-09-19 04:41:49

标签: ruby-on-rails ruby-on-rails-3 controller migration inflection

我用Rails查看了Stack Overflow和Agile Development,但找不到任何可以解决我需要的所有部分的东西。

我刚刚在rails中生成了一个Cow模型。显然,Rails使用过时的复数牛(“kine”),因此当我创建该模型时,它构建了一个Kine迁移:

class CreateKine < ActiveRecord::Migration
  def change
    create_table :kine do |t|
      t.string :name
      t.string :farm
      t.string :breed

      t.timestamps
    end
  end
end

我知道我可以进入模型的.rb文件和set_table_name回牛,但我担心相关的控制器。如果我创建一个Cows控制器,它会不同步?

如何让一切都成为牛/奶牛?谢谢。这是我的第一个应用程序之一,我已经因管理控制器模型关联而感到困惑,因此这个变形问题无济于事。

2 个答案:

答案 0 :(得分:26)

这里创建一个变形就是一个例子:

配置&GT;初始化&GT;是inflections.rb

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'cow', 'cows'
end

答案 1 :(得分:2)

尝试重命名表:

class RenameKineToCows< ActiveRecord:Migration

  def up
    rename_table :kine, :cows
  end 
  def down
    rename_table :cows, :kine
  end
end

将app / models / kine.rb重命名为cow.rb并编辑文件

class Cow < ActiveRecord::Base

  self.table_name = 'Cow'
end

将app / controllers / kine_controller.rb重命名为cows_controller.rb并编辑文件

class KineController < ApplicationController 

class CowsController < ApplicationController

并编辑config / routes.rb

resources :kine

resources :cows