Ruby on rails 如何在Rails模型中验证person_ID?

Ruby on rails 如何在Rails模型中验证person_ID?,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,在我的Rails应用程序中,我在两个模型之间建立了一个多到多的关系,因此我创建了如下新对象: Project.new(:name => 'Test', :person_ids => [1, 2, 3]) 验证模型中的个人ID的好方法是什么 这就是我到目前为止所做的: class Project < ActiveRecord::Base has_many :people_projects has_many :people, :through => :peopl

在我的Rails应用程序中,我在两个模型之间建立了一个多到多的关系,因此我创建了如下新对象:

Project.new(:name => 'Test', :person_ids => [1, 2, 3])
验证模型中的
个人ID
的好方法是什么

这就是我到目前为止所做的:

class Project < ActiveRecord::Base

  has_many :people_projects 
  has_many :people, :through => :people_projects 

  validates :person_ids, inclusion => { :in => lambda { |x| x.valid_people } }

  def valid_people
    user.people.map(&:id)   
  end    

end
class项目:people\u项目
验证:person_id,inclusion=>{:in=>lambda{{| x | x.valid_people}
def有效_人员
user.people.map(&:id)
结束
结束
但是,这不起作用,因为
person\u id
被发布到一个数组中


有人能帮忙吗?

使用自定义验证方法,如

class Project < ActiveRecord::Base
  validate :valid_people

  def valid_people
    people = user.people.pluck(:id)
    if person_ids.blank? || (person_ids - people).any?
      errors.add(:person_ids, "Please add real people")
    end
  end    

end
class项目
你能展示你的人际关系并准确说出你想做什么吗?@rb512:我在上面添加了更多信息。这就是你想做的吗@戴帕:不,实际上不是。但是,谢谢。而不是
!(…).blank?
,也可以使用
(…).any?
删除双重否定。@HolgerJust。。谢谢你的建议。更新了答案:)@Tintin81。。是的,那是个打字错误:)