gpt4 book ai didi

mysql - 在 Rails 应用程序中存储操作列表

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:35 25 4
gpt4 key购买 nike

我需要一些建议。我正在制作一个学习起来有点复杂的应用程序。它有一个用户模型。用户注册后,我希望在他/她第一次(也是第一次)访问某些页面时出现模式对话框。例如,有一个“投票”页面和一个“创建投票”页面等。

实现此类帮助系统的最佳方式是什么?我想在我的用户模型中添加一列,其中可以包含默认值列表,例如“投票、创建、共享”。当用户访问与这些操作之一相对应的页面时,如果操作的名称仍在列表中,则会出现模式,并且操作的名称将从列表中删除。

这听起来合理吗?我知道在规范化数据库中,您不应该在单个字段中存储多个值。但是创建一个名为“actions”的表和另一个将用户与操作相关联的连接表似乎很疯狂。用户在网站上只能做 4 到 5 件事。

或者是否有其他我缺少的方法可以做到这一点?预先感谢您的建议。

最佳答案

您可能应该制作一个 UserTrigger 模型,可用于“触发”像这样的某些操作。在实践中它看起来像这样:

<% for_trigger(@user, :first_time_help) do %>
...help content...
<% end %>

此方法的定义大致如下:

def for_trigger(model, name)
if (model.triggers.where(:name => name.to_s).delete_all > 0)
yield
end
end

较软的版本会有一对 should_trigger?did_trigger! 方法,其中一个用于测试,另一个实际删除触发记录。对于大多数情况,这种单次触发应该足够好。

您的用户模型中的定义大致如下:

class User < ActiveRecord::Base
has_many :triggers,
:class_name => 'UserTrigger'
end

class UserTrigger < ActiveRecord::Base
belongs_to :user
end

您必须在您的用户模型或需要它的任何其他模型上预先填充这些触发器记录after_create。要重新设置触发器,只需重新添加记录即可。

关于mysql - 在 Rails 应用程序中存储操作列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13962360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com