使用.build_时has_one未初始化的常量

时间:2015-01-18 04:21:26

标签: ruby-on-rails

我的情况是,作业有一个与之相关的训练课程

class Assignment < ActiveRecord::Base
   has_one :trainingsession
end

class TrainingSession < ActiveRecord::Base
  belongs_to :assignment
  has_many :drills
end

当我尝试使用has_one关系构建对象时,我一直收到uninitialized constant错误

我正在使用以下内容在我的控制器中构建训练课程

@activetrainingsession = @assignment.build_trainingsession 

那条线随着uninitialized constant

而爆炸

看起来应该是直截了当的东西!!

1 个答案:

答案 0 :(得分:1)

按照惯例,Rails使用camelizeunderscore在camel case和underscored表示之间切换。这意味着,在您的情况下,TrainingSession将被正确引用为training_session(而不是trainingsession)。

你需要:

@activetrainingsession = @assignment.build_training_session

但是,要一直遵循上述惯例,可能会更好:

@active_training_session = @assignment.build_training_session