0

我正在使用 Rails 3.0.9

我的项目只是为一组人创建的。现在我想增强我的项目以启用多个组访问。在我的数据库中,我将在我的用户表和活动表中添加一个新列。架构更改:table: users id, name, group_id # 新增

table: 活动 id, activity_name, group_id # 新增

现在,如果 users.group_id 为 1,则在活动页面上,用户只能看到 activity.group_id = 1 的数据

由于那里有大量的代码和逻辑,我不想更改控制和视图。此数据过滤器也发生在其他表上。我知道有一种方法可以使用 current_user.activities.find(:all),但它会影响我项目中的几乎所有代码。

有没有办法在不更改太多代码的情况下为特定用户配置数据过滤器?

提前致谢!

4

1 回答 1

0

查看租赁宝石。 https://github.com/yoolk/tenancy

如果您设置 Group.current = group,它会将 where group_id = Group.current.id 添加到对象是 scoped_to 组的所有查询中。

它非常干净,为每个模型添加了大约 3 行代码。我的 application_controller 在 Devise 登录后设置 Group.current。(另外〜3行代码)

于 2014-04-01T14:32:55.650 回答