我需要知道是否可以从类方法中调用类方法以及如何调用。
我的模型上有一堂课,其中一门课的方法很长:
def self.method1(bar)
# Really long method that I need to split
# Do things with bar
end
所以我想用2种方法拆分这个方法。像这样的东西
def self.method1(bar)
# Do things with bar
# Call to method2
end
def self.method2(bar)
# Do things
end
它们都必须是类方法
如何从 method1 调用此方法2 ?
感谢。
答案 0 :(得分:1)
在此处回答:Calling a class method within a class
重新迭代:
def self.method1(bar)
# Do things with bar
# Call to method2
method2( bar )
end
一个完整的例子:
class MyClass
def self.method1(bar)
bar = "hello #{ bar }!"
method2( bar )
end
def self.method2(bar)
puts "bar is #{ bar }"
end
end
MyClass.method1( 'Foo' )
答案 1 :(得分:1)
为了了解发生了什么,您必须检查类方法中的范围。
class Foo
def self.bar
puts self
end
end
Foo.bar
# => Foo
调用Foo.bar
时,会返回Foo
。不是实例,而是课程。这意味着您可以在Foo
方法中访问self.bar
的每个类方法。
class Foo
def self.bar
puts "bar was called"
self.qux
end
def self.qux
puts "qux was called."
end
end
Foo.bar
# => bar was called
# qux was called.
答案 2 :(得分:1)
<div class="searchbox fr">
<div class="selectContainer fl">
<span class="selectOption" id="jsSelectOption" data-value="course">
Type of search
</span>
<ul class="selectMenu" id="jsSelectMenu">
<li data-value="test">test</li>
<li data-value="test_score">test score</li>
<li data-value="user">user</li>
</ul>
</div>
<script src="{% static 'js/jquery.min.js' %}"></script>
<input id="search_keywords" class="fl" type="text" value="" placeholder="Please input keyword here"/>
<img class="search_btn fr" id="jsSearchBtn" src="{% static 'img/search_btn.png' %}"/>
</div>
是类本身。因此可以访问当前类中定义的每个类方法。上面的例子非常有用,但我想再给你一个更明确的(在我看来):
self