Rails中是否保留了应用程序名称?

时间:2015-04-15 15:16:52

标签: ruby-on-rails

我在Rails 4应用程序中有一个Application模型。

它在测试中给了我一些奇怪的错误,包括

NoMethodError: undefined method `user_id=' for #<Application:0x007f851222d370>

ActiveModel::MissingAttributeError: can't write unknown attribute `user_id`

模型肯定有user_id列。迁移看起来像这样:

....
t.references :user, index: true, foreign_key: true
...

并在控制台中检查Application.column_names显示它在那里。

application.rb和user.rb都定义了相关的belongs_tohas_many调用。

我正在挠头,我唯一能想到的是Application这个词在Rails中表现得很奇怪。是这样的吗?或者我错过了一些明显的东西?

2 个答案:

答案 0 :(得分:2)

Rails没有在“顶级命名空间”中声明Application。默认情况下,Rails.application和rails会生成ApplicationController

但是,您需要经常需要明确使用::Application以避免与Rails::Application混淆。

您甚至不必遵循扩展ApplicationController的Rails约定。

然而,说有一个名为Application的模型可能是一个坏主意,因为后来必须处理你的代码的任何可怜的草皮都会非常困惑。

答案 1 :(得分:0)

与config {application.rb中定义的Rails::Application类或其子类发生冲突,我相信。