activerecord疯了吗?还是我做错了什么

时间:2013-03-17 22:37:18

标签: ruby-on-rails ruby activerecord ruby-on-rails-3.2

原因如下:

class Prijave < ActiveRecord::Base
   belongs_to :timovi
   belongs_to :liga
end

class Timovi < ActiveRecord::Base
    belongs_to :sportovi
    has_many :timoviusers, :dependent => :destroy
    has_many :prijaves, :dependent => :destroy
end

当我试图删除一个Timovi时,我得到了: 未初始化的常数Timovi :: Prijafe

另外,在控制台

1.9.3p194 :001 > a=Timovi.find(6)
  Timovi Load (0.2ms)  SELECT `timovis`.* FROM `timovis` WHERE `timovis`.`id` = 6 LIMIT 1
1.9.3p194 :007 > a.prijaves
NameError: uninitialized constant Timovi::Prijafe

Prijafes?我没有在任何地方宣布......我没有任何地方...... Bug?我做错了什么吗? 谢谢

2 个答案:

答案 0 :(得分:2)

Active Record使用活动支持变形器从复数形式计算出类名应该是什么。这不是万无一失的,特别是当这个词似乎不是英语时。

您可以添加变形器规则来教导您想要使用的复数/单数(初始化程序中应该有一个示例文件,说明如何执行此操作),或者您可以指定has_many的:class_name选项以便激活记录不必猜测班级名称。

答案 1 :(得分:1)

“Prijafe”的复数是“Prijaves”

因此,当你调用a.prijaves时,你会使单位化不变。

这是一个链接:Ruby on Rails: How do you explicitly define plural names and singular names in Rails?