Ruby on rails 如何在Rails模型中验证person_ID?
在我的Rails应用程序中,我在两个模型之间建立了一个多到多的关系,因此我创建了如下新对象: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
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。。是的,那是个打字错误:)