Я хотел бы создать область для обработки такого типа потенциально общего поиска:
class Trigger < ActiveRecord::Base
belongs_to :position
# if you're in rails 2
named_scope :within, lambda{|tlx, tly, brx, bry| {:joins => :position, conditions => ['`positions`.posx >= ? AND `positions`.posy >= ? AND `positions`.posx <= ? AND `positions`.posy <= ?', tlx, tly, brx, bry]} }
# if you're in rails 3
scope :within, lamba{|tlx,tly,brx,bry| joins(:position).where('`positions`.posx >= ? AND `positions`.posy >= ? AND `positions`.posx <= ? AND `positions`.posy <= ?', tlx, tly, brx, bry) }
end
Тогда в вашем контроллере вы просто сделаете:
Trigger.within(top_left_x, top_left_y, bottom_right_x, bottom_right_y)