复数方法似乎不起作用

时间:2014-11-07 22:31:26

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我需要生成一个创建名为creditcardquotas的表的迁移,但rails生成一个名为credit_card_quota的表,与模型的名称完全相同。

我尝试使用复数方法

helper.pluralize(2,'quota')    => “2配额”

class CreateCreditCardQuota < ActiveRecord::Migration
      def change
        create_table :credit_card_quota do |t|
          t.integer :credit_card_id
          t.integer :quotes
          t.integer :interest
          t.timestamps
        end
      end
    end

如何告诉Rails迁移我希望该表名为credit_card_quotas

2 个答案:

答案 0 :(得分:1)

config/initializers/中创建一个文件。将文件命名为inflections.rb并在其中添加此内容。

在添加之前,你得到:

helper.pluralize(2, 'quota') 
 => "2 quota" 

添加变形:

ActiveSupport::Inflector.inflections do |inflect|
     inflect.plural 'quota', 'quotas'
end

之后:

helper.pluralize(2, 'quota') 
 => "2 quotas" 

您可以在此文件中添加任何类型的有效或无效复数...

应用此配置更改后运行迁移。

答案 1 :(得分:0)

根据我最近的经验,似乎Rails / Active Record不知道如何对单词“ quota”进行复数,或者认为单词“ quota”的复数是“ quota”。我只是尝试为与“ quota.rb ”中的 Quota 类配对的“ quotas”表创建新迁移。在Rails控制台中,当尝试使用此模型时,我看到了以下警告:

Quota(Table doesn't exist)

但是当我将我的 Quota 类更新为 Quotas 并重命名了文件时,我能够使用数据库中的配额表。我最终的解决方案是将数据库表名称从 quotas 更改为 quota ,并为模型使用 Quota 类。