我有一个管理任务的Rails 3.2应用程序。此处正在为用户分配任务。任务模型具有多个用户变量,即布尔值。如何添加验证以表明至少有一个用户设置为true?
原件:
class Task < ActiveRecord::Base
attr_accessible :title, :user1, :user2, :user3, :user4:
validates :title, :presence => true
validates :is_assigned
def is_assigned
if #AT_LEAST_ONE_USER_IS_TRUE
errors.add("The task must be assigned to at least one user.")
end
end
end
编辑:
class Task < ActiveRecord::Base
attr_accessible :title, :user1, :user2, user3, :user4
validates :title, :presence => true
validate :is_assigned
def is_assigned
unless @user1 || @user2 || @user3 || @user4
errors.add(:user1, "The task must be assigned to at least one user.")
end
end
end
我越来越接近了,但这不起作用。错误似乎总是出现。
看起来像errors.add需要另一个变量。如何为所有用户而不仅仅是user1提供?
答案 0 :(得分:1)
检查至少有一个用户是否为真:
if @user1 || @user2 || @user3 || @user4
答案 1 :(得分:0)
这最终成为我的最终解决方案:
class Task < ActiveRecord::Base
attr_accessible :title, :user1, :user2, user3, :user4
validates :title, :presence => true
validate :is_assigned
def is_assigned
unless user1 || user2 || user3 || user4
errors[:base] << "The task must be assigned to at least one user."
end
end
end