0

キャンパスという名前のテーブルが必要です。しかし、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 に答える