数据库驱动的应用程序中的Has_Many,Belongs_To关系

时间:2009-09-20 05:23:10

标签: mysql ruby-on-rails cookies has-many belongs-to

我正在开发一个应用程序,允许用户使用给定的搜索条件(例如标题,关键字,作者)在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 :(得分:0)

在考虑如何之前,您需要确定的内容。您的系统需要什么行为?

您是否希望所有用户共享一个全局搜索对象?

您是否希望为每个用户存储一个搜索对象

您希望每个用户都拥有多个搜索记录吗?

然后相应地调整搜索对象,如果您的要求不是单个全局搜索对象,那么它需要具有User或“user id”属性的实现。

答案 1 :(得分:0)

您是否正在尝试跟踪所有用户运行的搜索,或者只是最后一次搜索?如果是前者,您需要在数据库中跟踪,如果是后者,您可以将信息存储在用户的cookie中。