Отношения Has_Many, Belongs_To в приложении, управляемом базой данных - PullRequest
1 голос
/ 20 сентября 2009

Я работаю над приложением, которое позволяет пользователю искать определенную книгу на Amazon, используя заданный критерий поиска (например, название, ключевое слово, автор). В настоящее время я пытаюсь сохранить эти результаты поиска в базе данных MySQL, но я борюсь с концепцией отношений.

Кажется естественным, что я бы структурировал модели примерно так:

class Search < ActiveRecord::Base
  has_many :books
end

class Book < ActiveRecord::Base
  belongs_to :search
end

Если пользователь выполняет второй поиск, мне нужен способ обновить результаты поиска новыми книгами. Мое первое желание - сделать что-то вроде следующего:

Search.update(1,:books)

Способ обновления работает следующим образом? Я на правильном пути?

Кроме того, я не уверен, является ли обновление результатов поиска в базе данных правильным выбором. Могут ли быть потенциально негативные последствия, если два пользователя будут выполнять поиск одновременно? Моя единственная причина сохранения этих результатов поиска в базе данных состоит в том, что мне нужно отобразить информацию для книги, которую они выбрали позже в сеансе пользователя. Я предположил бы, что, если бы я только обновил результаты поиска, и было много пользователей, использующих инструмент, который перевернул бы всю цель использования базы данных, поскольку результаты поиска второго пользователя переписали бы результаты поиска первого пользователя. Это правда?

Могу ли я, возможно, сохранить информацию в файле cookie пользователя?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2009

Вы пытаетесь отследить все поисков, выполненных пользователем, или только последний? Если это первое, вам нужно будет отслеживать в базе данных, если второе вы можете сохранить информацию в cookie пользователя.

0 голосов
/ 20 сентября 2009

Прежде чем думать о как , вам нужно определить свой что . Какое поведение вашей системы требуется?

Хотите ли вы, чтобы один объект глобального поиска был доступен всем пользователям?

Хотите сохранить один объект поиска на пользователя

Хотите, чтобы у каждого пользователя была запись нескольких поисков?

Затем откорректируйте поисковый объект соответствующим образом, если ваше требование - это что-то иное, чем отдельный глобальный поисковый объект, тогда ему необходимо установить связь с атрибутом User или user ID.

...