开发者

Ruby on Rails Inflection error - uninitialized constant

开发者 https://www.devze.com 2023-02-04 06:55 出处:网络
I am using Ruby on Rails to create a website for a game I play. I have a User model and a Starbase model. The relationship I am trying to setup is like so

I am using Ruby on Rails to create a website for a game I play.

I have a User model and a Starbase model. The relationship I am trying to setup is like so

class User < ActiveRecord::Base
  has_many :starbases
end

class Starbase < ActiveRecord::Base
  belongs_to :user
end

However when I open script/console and try to access the users starbases it gives me an error: NameError: uninitialized constant User::Starbasis.

It seems as if it i开发者_开发知识库s a problem with inflection and rails is not pluralizing starbase correct.

I have tried adding this to the inflections.rb in the intializers folder:

ActiveSupport::Inflector.inflections do |inflect|
  inflect.plural 'starbase', 'starbases'
end

but it still does not solve the issue. Could anyone give advice on how to get this working?


Have you tried adding a line for the inverse inflection (i.e. 'singular'):

 inflect.singular "starbases", "starbase"

I tried your example in my console and it was the singularization that caused problems, not the other way around. I'm not sure if this fixes other issues (like routes), but it should fix the simple stuff (I think).


Little trick i picked up to double check how Active Support might singularize, or pluralize my Class names, and/or Module names.

have your rails app server running and in a new tab enter into your rails console by typing rails console. In there you can easily double check for the correct style for your names.

long way ActiveSupport::Inflector.pluralize "fish" # => "fish"

short way "fish".pluralize # => "fish"

You can find more examples here

https://github.com/rails/rails/blob/master/activesupport/test/inflector_test_cases.rb

0

精彩评论

暂无评论...
验证码 换一张
取 消