B S*_*ven 12 ruby validation ruby-on-rails ruby-on-rails-3
在我的整个申请self.中,没有必要引用用户的名字.name工作良好.
为什么以下代码需要self按预期工作?
class User< ActiveRecord::Base
before_save :validate_name
def validate_name
if self.name.nil? || self.name.empty?
self.name= "Mr. No Name"
end
end
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我知道validates_presence_of可以用来阻止保存,但如果没有给出名字,我想保存默认值.
Rails 3.0.7.
tad*_*man 23
通常使用的self是强制Ruby将其识别为方法调用而不是将其误解为变量.如果没有调用方法的先验知识day=,那么day = "x"就像Ruby一样调整Ruby.self.day = "x"总是一个方法调用.
这是麻烦的原因是因为在解析User类文件之后动态添加name和name=方法.Rails在使用模型时所做的第一件事是为相关数据库字段创建方法,但这会在user.rb解析文件后发生.
| 归档时间: |
|
| 查看次数: |
6353 次 |
| 最近记录: |