Ruby on rails 如果表的名称中有uu,如何从rails控制台访问该表

Ruby on rails 如果表的名称中有uu,如何从rails控制台访问该表,ruby-on-rails,Ruby On Rails,我试图访问名称中带有下划线的表的所有记录。 例如,如果我的模式中有一个名为trips的表,我可以在rails控制台中执行Trip.all。但是,如果我的表名包含下划线(例如,users\u foods),该怎么办 我尝试了以下选项: Users_food.all User_food.all User_foods.all etc. 所有这些都不起作用,有什么建议吗?对于名为users\u foods的表,ActiveModel应该为您提供相应的Rails模型UsersFood,以符合Ruby/

我试图访问名称中带有下划线的表的所有记录。 例如,如果我的模式中有一个名为
trips
的表,我可以在rails控制台中执行
Trip.all
。但是,如果我的表名包含下划线(例如,
users\u foods
),该怎么办

我尝试了以下选项:

Users_food.all
User_food.all
User_foods.all 
etc.

所有这些都不起作用,有什么建议吗?

对于名为
users\u foods
的表,ActiveModel应该为您提供相应的Rails模型
UsersFood
,以符合Ruby/Rails对象命名约定。试试看

类名
Users\u food
User\u food
等不符合Ruby约定。

解决了这个问题
人们可以使用
UserFood
访问数据。我在创建
bonus\u历史记录
表时遇到了同样的问题。直到我找到原因,我才找到答案

我只做了
rails g迁移BonusHistory

这就是问题所在。我的rails控制台根本找不到BonusHistory,因为我没有模型

因此,我必须首先回滚迁移
rake db:rollback STEP=1
,然后删除迁移文件,最后执行

rails g model BonusHistory



在迁移该表之后,当我进入rails控制台时,我可以成功地请求
BonusHistory。count

不起作用。我想我只需要更改我的模式名,以符合ruby约定的有趣(和奇怪)。不,您的表名很好,实际上不应该更改为Ruby约定。这就是ActiveModel(Rails的一部分)的全部要点,它从Ruby对象和模型中抽象出特定于db的操作。那么你有不同的建议吗?这一定是更基本的东西。也许是Rails本身的设置。或相应的模型。为了确认这一点,我将启动一个全新的默认Rails应用程序(通过$Rails new_应用程序),然后通过$Rails generate model UsersFood username:string创建一个新模型。然后运行$rakedb:migrate应该创建一个名为users\u food的db表。基本上,这验证了你一直试图做的相反的事情。如果可以的话,你可以使用它的设置来与不适合你的项目进行比较