【发布时间】:2013-02-15 16:51:49
【问题描述】:
我试图让用户通过电子邮件地址搜索他们自己的朋友。我想做类似的事情:
current_user.search('test@fake.com')
并让它返回具有该电子邮件地址的当前用户朋友数组。
所以我在我的用户模型上建立了一个非常基本的友谊关系
user.rb
has_many :friendships
has_many :friends, through: :friendships, source: :friend
has_many :inverse_friendships, class_name: 'Friendship', foreign_key: 'friend_id'
has_many :inverse_friends, through: :inverse_friendships, source: :user
friendship.rb
belongs_to :friend, class_name: 'User', foreign_key: 'friend_id'
belongs_to :user
我想在我的用户模型上设置一个方法,可以通过电子邮件地址搜索他们的朋友。效果不是很好
def search(query)
conditions = ['friends.user_id = ? AND email LIKE ? ', self.id, "%#{query}%"]
User.includes(:friends).where(conditions)
end
我想我只是不确定如何在此处格式化我的活动记录查询/SQL,因为我正在尝试搜索自引用模型的关系。有人有什么想法吗?
谢谢!
【问题讨论】:
标签: sql ruby-on-rails ruby-on-rails-3 rails-activerecord