2013-04-29 5 views
0

Поэтому у меня есть модель Items со следующими полями:Генерирование модели на основе других моделей рубин на рельсах

  • Имя (строка)
  • Описание (текст)
  • Hider (строка)
  • Seeker (строка)
  • Long (поплавок)
  • Lat (поплавок)
  • Ключевое слово (строка)
  • Найдено (булев)

Highscore должен иметь следующие поля:

-username (имя) -точек (интермедиат)

Я хочу, чтобы создать модель, которая будет рекорды итерации модель Item и найти entiers, которые имеют логическое значение true. Затем добавьте искателя в таблицу рекордов с точкой. Если пользователь уже существует, просто добавьте дополнительную точку в его запись.

Как бы я идти о разработке этого типа базы данных ...

+0

Что вы подразумеваете под «Если пользователь уже существует, просто добавьте лишний балл к его записи». Когда он решает снова повторить? И какой момент в его записи? – kiddorails

+0

Если пользователь уже добавлен в таблицу рекордов. Он должен переименовываться каждый раз, когда найденный параметр был изменен с false на true. (поскольку он всегда будет ложным при создании новой записи) Точка означает оценку. Я отредактирую сообщение. –

ответ

2

Я никогда не предложу перебор подхода здесь. Это база данных, о которой мы говорим, и линейная итерация по данным нереальна.

Что вы можете сделать, это использовать Observer. Читайте о них здесь - http://api.rubyonrails.org/classes/ActiveRecord/Observer.html

С этим, вы можете проверить на save и update обратных вызовов и в зависимости от вашего логического значения, вы можете создать/обновить запись рекордов.

+0

О, это круто! Позвольте мне просто написать логику. Вы создаете Obeserver, который наблюдает за моделью товара. Когда что-то обновляется в модели , вы можете проверить, что найденное действие истинно , если оно верно, создайте новую запись в модели рекордов –

+0

Точно. И это красиво делать эту работу. – kiddorails

Смежные вопросы