如何神奇地为活动记录范围提供参数



我不确定这是否可能,但让我们看看你们中是否有人能想出一个解决方案。就可读性而言,这或多或少与代码质量有关,而不是一个实际问题,因为我已经有了解决方案。我有一个友情模型和一个用户模型。friendship模型用于模拟两个用户之间的友谊:

class Friendship
  def self.requested(user)
    where(:user_id => user).where(:status => 'requested')
  end
  def self.pending(user)
    where(:user_id => user).where(:status => 'pending')
  end
  def self.accepted(user)
    where(:user_id => user).where(:status => 'accepted')
  end
  # ...
end
class User
   has_many :friendships
   # ...
end

是否有可能调用请求的、挂起的或接受的作用域不提供参数的用户模型?

a_user.friendships.pending # this does not work, is there a way to get it working?
a_user.friendships.pending(a_user) # works of course!

我认为如果去掉参数,这应该可以工作。像这样调用用户对象的pending off应该已经将友谊范围限定到适当的用户。像这样定义方法:

def self.pending
  where(:status => 'pending')
end

和电话:

a_user.friendships.pending

如果您不确定生成的查询是否正常工作,请检查日志。

如果你仍然想通过传递参数来调用它,我将该方法命名为Friendship.pending_for(user)

相关内容

  • 没有找到相关文章

最新更新