Ruby on rails 比较ActiveRecord::Base和ActiveRecord
ActiveRecord::Base和ActiveRecord之间的区别是什么 为什么我们必须扩展ActiveRecord::Base而不是ActiveRecordRuby on rails 比较ActiveRecord::Base和ActiveRecord,ruby-on-rails,Ruby On Rails,ActiveRecord::Base和ActiveRecord之间的区别是什么 为什么我们必须扩展ActiveRecord::Base而不是ActiveRecord class User < ActiveRecord::Base def self.authenticate_unsafely(user_name, password) where("user_name = '#{user_name}' AND password = '#{password}'").first e
class User < ActiveRecord::Base
def self.authenticate_unsafely(user_name, password)
where("user_name = '#{user_name}' AND password = '#{password}'").first
end
def self.authenticate_safely(user_name, password)
where("user_name = ? AND password = ?", user_name, password).first
end
def self.authenticate_safely_simply(user_name, password)
where(user_name: user_name, password: password).first
end
end
class用户
有一个很好的惯例,当你创建一个gem时,你不会创建很多顶级常量。相反,您应该创建一个单独的模块,其作用类似于gem的名称空间。这正是ActiveRecord模块的功能所在
ActiveRecord::Base是ActiveRecord的许多组件之一,其他组件包括
Schema
,SchemaDumper
Relation
,ImmutableRelation
验证,作用域
等类。您可以使用ActiveRecord::Base
查看整个列表。如果ActiveRecord的创建者将所有这些常量都放在主名称空间中,那么在没有冲突的情况下,您可以为常量指定的名称将受到很大限制,因此需要包装模块。此模块还可以包含一些额外的元数据,因此您可以随时使用ActiveRecord检查gem的当前版本。version
ActiveRecord
是一个,而ActiveRecord::Base
是一个