【发布时间】:2010-11-23 14:21:41
【问题描述】:
我正在开发一个具有文件夹、组和权限的系统。权限决定了不同组可以在每个文件夹中执行的操作。因此,每当我创建一个新组时,我都想在每个文件夹的权限表中添加一条记录,描述新组在该文件夹中可以做什么。
目前我只是循环遍历系统中的所有文件夹并为每个文件夹添加权限记录:
group = Group.create(params)
Folder.all.each do |folder|
Permission.create! do |permission|
permission.folder = folder
permission.group = group
permission.can_create = true
permission.can_read = true
permission.can_update = true
permission.can_delete = true
end
end
我不喜欢每次创建新组时都必须遍历所有记录的事实。所以基本上我正在寻找一种优雅的方式来使用 ActiveRecord 执行以下 SQL。
INSERT INTO permissions (folder_id, group_id, can_creat, can_read, can_update, can_delete)
SELECT id, #{group.id}, true, true, true, true
FROM folders
我想我可以使用find_by_sql 运行上述查询,但感觉不对,因为我是INSERTing,而不是SELECTing。
或者我应该忘记这一点并像上面的示例一样继续循环浏览我的文件夹记录吗?
提前致谢。
【问题讨论】:
标签: mysql ruby-on-rails activerecord ruby-on-rails-3