Он должен работать точно так же, нет необходимости в принадлежать_, так как он все равно круговой.
class Event < ActiveRecord::Base
has_one :next_event, :class_name => "Event", :foreign_key => "previous_event_id"
has_one :previous_event, :class_name => "Event", :foreign_key => "next_event_id"
end
Проблема здесь в том, что вы должны установить следующие и предыдущие события вручную. Вы можете просто создать next_event и посмотреть предыдущий (или наоборот - в зависимости от того, что более эффективно в вашем случае использования)
class Event < ActiveRecord::Base
has_one :next_event, :class_name => "Event", :foreign_key => "previous_event_id"
def previous_event
Event.first(:conditions => ["next_event_id = ?", self.id])
end
end