0

我有一个管理任务的 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?

4

2 回答 2

1

要检查至少一个用户是否为真:

if @user1 || @user2 || @user3 || @user4
于 2012-10-28T00:28:34.163 回答
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
于 2012-10-30T03:44:14.870 回答