what does “class << self” mean in Rails?
Possible Duplicates:
class << self idiom in Ruby Can someone please explain class << self to me?
我想知道
1 2 3 4 5 6 7 8 9 10 11 | class Post < ActiveRecord::Base class << self def search(q) # search from DB end end def search2(qq) # search from DB end end |
方法
那是一样的
1 2 3 4 5 6 7 8 9 10 11 12 | class Post < ActiveRecord::Base def self.search(q) # Class Level Method # search from DB end def search2(qq) # Instance Level Method # search from DB end end |
类方法适用于类(例如Post),实例方法适用于该类的实例(例如Post.new)
有些人喜欢
其他人喜欢用
另一方面,为每个方法添加
选择一个您喜欢自己的代码库的成语,但如果您在开源项目上工作或者在其他人的代码上进行协作,请使用他们的代码格式规则。
这真的是一个Ruby问题。看看"Ruby中的类<< self idiom"。
它创建类方法而不是实例方法。这和做
1 2 | Post.search(q) Post.new.search(qq) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class MyClass def self.method # do sth. end def MyClass.method2 # do sth. end class << self def method3 # do sth. end def another_class_method # do sth. end end end |
类方法在类上调用,而不是在实例上调用。个人偏好你想要使用的三个习语中的哪一个。我没有特别的理由,我更喜欢