0

タスクを管理する Rails 3.2 アプリがあります。ここでは、タスクがユーザーに割り当てられています。タスク モデルには、ブール値である複数のユーザー変数があります。少なくとも 1 人のユーザーが 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

少なくとも 1 人のユーザーが true かどうかを確認するには:

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 に答える