从数据库中检索信息的一种面向对象的方法是使用链接在一起的这三种方法。
您可以创建如下的实例方法:
def "find_friend"
self.class.where({friend_id: user_id})
end
然后像这样调用它:
# @user_friendship == <UserFriendship id: 1, friend_id: 2, user_id: 1>
@user_friendship.find_friend
如果我们有这样的user_friendships表:
| id | friend_id | user_id |
| 1 | 1 | 3 |
| 2 | 2 | 1 |
| 3 | 3 | 2 |
然后find_friend方法将返回第二条记录(id为2的记录)
@user_friendship.find_friend #=> <UserFriendship id: 2, friend_id: 2, user_id: 1>
现在,首先我的理解是正确的吗?
其次,这实际上是如何运作的? self.class.inspect
只返回看似是模型表模式的哈希的内容:
self.class.inspect #=> `UserFriendship(id: integer, friend_id: integer, user_id: integer)`
那么如何在这个简单的哈希上运行查询呢?
self.class.where({friend_id: user_id})
答案 0 :(得分:0)
类方法在哪里可以这样调用。
UserFriendship.where({friend_id: user_id})
每个Ruby对象都知道它自己的类类型,因此self.class.where({friend_id: user_id})
是同一个东西。 self.class
解析为UserFriendship
,然后您可以调用where方法传递键值对的散列值以撤回所需的记录。