我有这个方法:
def unassigned_workers?(users)
assigned_users = []
unassigned_users = []
users.each do |user|
if user.designated_to_assignment?(self)
assigned_users << user
else
unassigned_users << user
end
end
if unassigned_users.count > 0
true
else
false
end
end
它在我的Assignment
模型中。赋值模型有很多Users
,基本上这个方法尝试做的是检查用户是否根据我设置的另一个关系指定给赋值。它检查用户是否已分配并将其推送到正确的阵列上。有谁知道如何重构这个更小,更可读?
答案 0 :(得分:2)
不确定你为什么要分配用户 尝试:
def unassigned_workers?(users)
users.reject { |user| user.designated_to_assignment?(self) }.count > 0
end
reject从集合中删除与谓词匹配的元素。
此外,在模型中传递self作为参数是代码气味,也许依赖性是相反的
答案 1 :(得分:2)
如何使用any?
assigned_users
不一定是必需的。
def unassigned_workers?(users)
users.any? { |user| !user.designated_to_assignment?(self) }
end