我有几个简单的模型,如下所示:
楷模
class Task < ActiveRecord::Base
belongs_to :user
validates :name, :presence => true, :message => 'Name cannot be blank, Task not saved'
end
class User < ActiveRecord::Base
has_many :tasks
end
Run Code Online (Sandbox Code Playgroud)
VIEW就像这样调用它:
user.tasks< - 然后我遍历任务
问题:
在任务模型中 -
我用的时候:
validates :name, :presence => true , :message => 'Name cannot be blank, Task not saved'
Run Code Online (Sandbox Code Playgroud)
我收到500错误:
ActionView::Template::Error (uninitialized constant User::Task):
NameError in View file
Run Code Online (Sandbox Code Playgroud)
我用的时候:
validates_presence_of :name
Run Code Online (Sandbox Code Playgroud)
一切正常.
我认为上面两个验证方法都是相同的......问题与关联有关,以及验证如何与相关模型联系起来.我预感到事情的相关方式正在发生,但这只是一种预感.
任何帮助将不胜感激.非常感谢.
Dyl*_*kow 48
使用较新的validates :name格式时,可以将多个验证放在一行中,而不必为每种验证类型设置多行.因此,当Rails命中你的:message参数时,它会认为它是一种验证方法,而不是与之相关的消息:presence.试试这个:
validates :name, :presence => {:message => 'Name cannot be blank, Task not saved'}
Run Code Online (Sandbox Code Playgroud)
此外,根据您显示错误的方式,此错误实际上可能显示为"名称不能为......"; 如果是这样,您将要将消息设置为"不能为空,任务未保存".
| 归档时间: |
|
| 查看次数: |
33389 次 |
| 最近记录: |