Ruby on rails 与Rails相关的模型以“退出”;NameError uninitialized constant";

Ruby on rails 与Rails相关的模型以“退出”;NameError uninitialized constant";,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,我有两个模型,用户和离开 class User < ActiveRecord::Base has_many :leaves ... end class Leave < ActiveRecord::Base belongs_to :user #attr_accessible :user_id #default_scope -> { order('created_at DESC') } validates :user_id, presence: true

我有两个模型,用户和离开

class User < ActiveRecord::Base
  has_many :leaves
  ...
end

class Leave < ActiveRecord::Base
  belongs_to :user

  #attr_accessible :user_id
  #default_scope -> { order('created_at DESC') }
  validates :user_id, presence: true
 end
在users\u controller中,我遇到了一个奇怪的错误“uninitialized constant User::leave”,但我找不到拼写错误“leave”的地方。已检查所有迁移和shema.rb。在此代码之前,我调用@leaves2=Leave.all,这是通过OK,但当我执行“@user.leaves”时,它会在控制台上以“500内部服务器错误”和NameError中断。是否可以执行错误捕获或类似的操作,以查看此错误的确切来源


同样在rails控制台中,无法获取@leaves=@user.leaves,它以“NameError:uninitialized constant user::leave”退出。

活动记录将单数形式的叶子视为叶子。您可以使用屈折来覆盖它

config/initializers/endocations.rb

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'leave', 'leaves'
end

修改桑托什回答的一个小注释。必须包含语言修饰符(:en)

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'leave', 'leaves'
end
ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.irregular 'leave', 'leaves'
end