我在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_to
和has_many
调用。
我正在挠头,我唯一能想到的是Application
这个词在Rails中表现得很奇怪。是这样的吗?或者我错过了一些明显的东西?
答案 0 :(得分:2)
Rails没有在“顶级命名空间”中声明Application
。默认情况下,Rails.application
和rails会生成ApplicationController
。
但是,您需要经常需要明确使用::Application
以避免与Rails::Application
混淆。
您甚至不必遵循扩展ApplicationController
的Rails约定。
然而,说有一个名为Application的模型可能是一个坏主意,因为后来必须处理你的代码的任何可怜的草皮都会非常困惑。
答案 1 :(得分:0)
与config {application.rb中定义的Rails::Application类或其子类发生冲突,我相信。