我在User
类中定义了此方法:
def two_way_exists_with?(user1, user2)
return true if number_of_memberships(user1, user2) == 2
end
当我尝试从我的控制台调用它时,我不断收到undefined method
错误。
[3] pry(main)> two_way_exists?(u1, u2)
NoMethodError: undefined method `two_way_exists?' for main:Object
from (pry):3:in `__pry__'
[4] pry(main)> u1.two_way_exists?(u1, u2)
NoMethodError: undefined method `two_way_exists?' for #<User:0x007fe9e7eda228>
from /ruby-2.1.6@global/gems/activemodel-4.1.12/lib/active_model/attribute_methods.rb:435:in `method_missing'
[5] pry(main)> User.two_way_exists?(u1, u2)
NoMethodError: undefined method `two_way_exists?' for #<Class:0x007fe9eaabf0a0>
from /ruby-2.1.6@global/gems/activerecord-4.1.12/lib/active_record/dynamic_matchers.rb:26:in `method_missing'
如何调用此方法?
答案 0 :(得分:2)
如果您在说明中已在User类中定义了它,那么它就是一个实例方法,您可以将其作为接收方运行。
e.g。
u1.two_way_exists_with?(u1, u2)
但是,由于它是一个实例方法,因此您已经拥有一个可用作self
的用户对象,因此您只需要传入其他用户。
def two_way_exists_with?(other_user)
return true if number_of_memberships(self, other_user) == 2
end
u1.two_way_exists_with?(u2)
由于number_of_memberships
可能也是一种实例方法,因此您也不需要将两个用户传递给该方法。