0

我需要一张名为 Campus 的表。但是 Rails 将其解释为复数形式,把一切都搞砸了。所以我做了一些研究,他们建议添加这样的变形:

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
4

1 回答 1

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'

有了这些变形器,Rails 将寻找一个名为campuses. 由于您的表名是campus,因此您必须将以下内容添加到您的Campus模型中:

set_table_name 'campus'

请务必在更改后重新启动服务器inflectors.rb

于 2012-08-14T03:25:14.097 回答