当我试图定义一个校园时,桌子似乎丢失了。在rails中建模并自己设置复数名称

时间:2012-08-13 22:55:41

标签: database ruby-on-rails-3

我需要一张名为Campus的桌子。但是rails将其解释为复数,搞砸了一切。 所以我做了一个little research,他们建议添加这样的变形:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.singular /^(campus)(es)?$/i, '\1'
  inflect.plural   /^(campus)$/i, '\1es'
end

我在initializers / inflection.rb文件中添加了这个。 我创建了一个新的迁移来删除表并再次创建一个名为Campus的新表,期望解决问题,但现在我无法在控制台中获取表Campus:

$ rails console
Loading development environment (Rails 3.0.10)
1.9.2p290 :001 > Campus
 => Campus(Table doesn't exist) 

我做错了什么?我该如何解决这个问题? 谢谢你的帮助

我的校园模式是:

class Campus < ActiveRecord::Base

  validates_presence_of :name
  validates_presence_of :university_id

  has_many :pois, dependent: :destroy
  has_many :events, dependent: :destroy
  has_many :market_items, dependent: :destroy
  has_many :ads_points, dependent: :destroy
  belongs_to :university
end

1 个答案:

答案 0 :(得分:1)

inflectors.rb有一些标准代码,您可以根据自己的情况进行调整:

# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'

所以对你来说应该是:

inflect.plural /^(campus)$/i, '\1es'
inflect.singular /^(campus)es/i, '\1'

或者这可能更容易:

inflect.irregular 'campus', 'campuses'

使用这些inflectors,Rails将寻找一个名为campuses的表。由于您的表格名称为campus,因此您必须将以下内容添加到Campus模型中:

set_table_name 'campus'

确保在更改inflectors.rb后重新启动服务器。