所以,我在用户和考试之间建立了多对多的关系,使用权限作为中间表。
我想为管理员创建一个表,以授予对不同测试的不同级别的访问权限。
那么,有没有比遍历所有尚未与该用户绑定的考试并创建新权限更好的方法来创建新的权限记录?
请注意,部分或全部考试可能已经与用户绑定。
所以,我在用户和考试之间建立了多对多的关系,使用权限作为中间表。
我想为管理员创建一个表,以授予对不同测试的不同级别的访问权限。
那么,有没有比遍历所有尚未与该用户绑定的考试并创建新权限更好的方法来创建新的权限记录?
请注意,部分或全部考试可能已经与用户绑定。
假设你有这样的事情:
class User < ActiveRecord::Base
has_many :permissions
has_many :exams, through: :permissions
end
class Exam < ActiveRecord::Base
has_many :permissions
has_many :users, through: :permissions
end
class Permission < ActiveRecord::Base
belongs_to :user
belongs_to :exam
end
你可以这样做:
user = User.find(1)
if user.exams.where(id:foo).length==0
Permission.create(user_id:1, exam_id0:foo, access_level:bar)
else
user.permissions.where(exam_id:foo).first.update_attribute(:access_level,bar)
end
user_id
假设您正常建立关系(在权限上和权限内使用索引),它将连接表并确定权限是否已经存在exam_id
。