Я не думаю, что мы находимся в зоне наилучшей практики: вещь «один стол на заметку» действительно, действительно ужасна. Начните с вещи Note / Pad:
class Note < ActiveRecord::Base
has_many :note_versions # don't see how this can work
end
Мы уже в беде, потому что (1) таблица версий не находится в той же базе данных и (2) это разные таблицы для каждого пэда. Я уже говорил, что это ужасно?
С чего начать с версий заметок?
class NoteVersion
establish_connection THE_OTHER_DB # we know how to connect at least, I hope?
set_table_name '... # er, tricky - it changes
end
На данный момент, я думаю, лучшие практики выходят за рамки. Я думаю, что мы в стране find_by_sql. Это может сработать:
class Note < ActiveRecord::Base
def note_versions
NoteVersion.find_by_sql(['SELECT * FROM ?', self.uuid])
end
end
class NoteVersion < ActiveRecord::Base
establish_connection THE_OTHER_DB # as above
# maybe override all the "normal" AR methods to stop it trying to work
# with a non-existent "note_versions" table?
end
Я отказался от ассоциаций (вероятно, без больших потерь, если вы не хотите обновлять), но я думаю, что это может быть возможным способом продвижения вперед. Я расширяю свои знания ActiveRecord дальше, чем обычно, - может быть, у кого-то будет знание, которого нет у меня; это было бы хорошо.