可能重复:
map(&:name)在Ruby中意味着什么?
在Ruby中,我知道如果我这样做:
some_objects.each(&:foo)
Run Code Online (Sandbox Code Playgroud)
它是一样的
some_objects.each { |obj| obj.foo }
Run Code Online (Sandbox Code Playgroud)
也就是说,&:foo创建块{ |obj| obj.foo },将其转换为Proc,并将其传递给每个块.为什么这样做?它只是一个Ruby特例,还是有理由为什么这样做呢?
我看到可以在Rails模型和迁移中添加相同的约束/验证.但哪一个是最好的方法?在模型和数据库级别(以及为什么)验证它们是一个好的做法吗?或者它们在轨道上相同?
例如,我们可以在模型和迁移中对名称进行相同的验证
class User < ActiveRecord::Base
validates :name, :uniqueness => true, :presence => true
end
class CreateUser < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name, :unique => true, :null => false
end
end
end
Run Code Online (Sandbox Code Playgroud)