我试图编写一个ActiveRecord查询,该查询将返回与current_user相同的正方形中的所有字符和non_player_characters的记录,同时从结果中排除current_user。
class Square
def self.characters(user)
characters = []
players = Character.all
bots = NonPlayerCharacter.all
characters << bots.find_by(x_coordinate: user.x_coordinate, y_coordinate: user.y_coordinate)
characters << players.find_by(x_coordinate: user.x_coordinate, y_coordinate: user.y_coordinate)
end
end
我阅读了rails guides,它告诉我如何从搜索结果中排除项目,但仅在单个命令的上下文中。换句话说,阅读完之后,我无法弄清楚如何使用find_by方法链接条件。
find_by
不返回活动记录关系,where
可以继续修改:
players = Character.where(your conditions)
players = players.where.not(id: user.id)
# ...
或者,您可以建立一个关系,然后调用find_by
该关系。
players = Character.where.not(id: user.id)
players = players.where(some other conditions)
# ...
players.find_by(your conditions)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句