Ruby on rails 创建一个表,其中包含用户第一次看到的页面,而不是cookies。这种做法不好吗?

Ruby on rails 创建一个表,其中包含用户第一次看到的页面,而不是cookies。这种做法不好吗?,ruby-on-rails,ruby,database,cookies,Ruby On Rails,Ruby,Database,Cookies,我正试图避免客户端cookie,因为不同的浏览器可以在我的应用程序中再次显示浏览页面 用户只需要在第一次看到该教程时才能看到它。然后我在这样一张桌子上思考: 表格:用户查看的x页 user_id seen_page seen_profile seen_another_page... 12 2012-12-12 13 2012-12-12 2012-12-12 然后每次我都要用这个加入表用户

我正试图避免客户端cookie,因为不同的浏览器可以在我的应用程序中再次显示浏览页面

用户只需要在第一次看到该教程时才能看到它。然后我在这样一张桌子上思考:

表格:用户查看的x页

user_id      seen_page         seen_profile        seen_another_page...

  12         2012-12-12 

  13         2012-12-12         2012-12-12  
然后每次我都要用这个加入表用户


另一种解决方案是将这些列直接添加到用户表。

根据您拥有的页面数量和计划添加的页面数量,每个附加页面都需要修改数据库架构。一般来说,这不是一个好主意。您可以为每个用户每页创建一条记录。用户id、页面id上的索引。如果您想知道他们何时访问它,第三个字段将是日期,否则将使用布尔值。另一种选择是使用位图,但如果您需要日期,这将不起作用,但是每页只需要1条记录来跟踪所有用户访问


位图字段将存储类似于00100010001110010的内容,其中每个数字表示一个用户id,并存储对该页面的访问。例如,用户id 12将是第12位数字0或1等。在访问时,您将更新1字段并将第n位数字设置为1。位图通常速度非常快,支持一些附加操作,如联合、交叉等。

根据您拥有的页面数量和计划添加的页面数量,每个附加页面都需要修改数据库模式。一般来说,这不是一个好主意。您可以为每个用户每页创建一条记录。用户id、页面id上的索引。如果您想知道他们何时访问它,第三个字段将是日期,否则将使用布尔值。另一种选择是使用位图,但如果您需要日期,这将不起作用,但是每页只需要1条记录来跟踪所有用户访问


位图字段将存储类似于00100010001110010的内容,其中每个数字表示一个用户id,并存储对该页面的访问。例如,用户id 12将是第12位数字0或1等。在访问时,您将更新1字段并将第n位数字设置为1。位图通常速度非常快,并且支持一些附加操作,如联合、交叉等。

我认为列更具成本效益,查询更少

尝试布尔图列,然后当有人登录到你的应用程序时,只需获取该列并将其存储在会话中

session[:tour] ||= @user.tour

我认为一个专栏会更具成本效益,更少的查询

尝试布尔图列,然后当有人登录到你的应用程序时,只需获取该列并将其存储在会话中

session[:tour] ||= @user.tour

在阅读了您上次的评论之后,我想到了这个想法,我认为您应该在用户和页面之间建立一个多对多关联的关系,然后您可以有一个带有user\U id和page\U id列的连接表pages\U users,然后在每次呈现时检查当前用户是否具有当前页面。我认为这是最好的方法。

在阅读了你的上一篇评论后,我想到了这个想法,我认为你应该在用户和页面之间建立一个多对多的关联,然后你可以有一个带有user\u id和page\u id列的连接表pages\u users,然后在每次渲染时检查当前用户是否具有当前页面。我认为这是最好的方法。

为什么你不想使用Cookie?对不起,此教程在你的应用程序的每个页面上都不一样吗?是的,每个页面都有自己的教程为什么你不想使用Cookie?对不起,此教程在你的应用程序的每个页面上都不一样吗?是的,每个页面都有自己的教程你可以在一个查询中获得用户访问的所有页面,并将其分配给会话变量,或仅获取一页。它可以扩展到1000000页,但是有列可能没有,一些数据库不允许有那么多的字段或行长度。是的,我问他是否每个页面都有一次浏览,起初我认为每个页面的浏览都是一样的。当他回答说您可以在一个查询中获取一个用户访问的所有页面,并将其分配给会话变量,或者仅获取一个页面时,我可能必须对其进行编辑。它可以扩展到1000000页,但是有列可能没有,一些数据库不允许有那么多的字段或行长度。是的,我问他是否每个页面都有一次浏览,起初我认为每个页面的浏览都是一样的。当他回答时,我可能不得不编辑这个