在我的Rails 4应用中,我users
可以有多个companies
,而people
可以有很多company_id
。
当用户创建新人时,如何验证他不可能(通过浏览器黑客行为)选择其他用户class Person < ActiveRecord::Base
belongs_to :user
belongs_to :company
validates :company_id, :inclusion => { :in => Company.where(:user_id => user_id) }
...
end
?
我想在模型级别处理这个问题,但这不起作用:
{{1}}
感谢任何想法。
答案 0 :(得分:1)
您需要将公司ID数组传递给in:
,如下所示:
validates :company_id, :inclusion => { :in => Proc.new { |person| Company.where(:user_id => person.user_id).pluck(:id) } }
答案 1 :(得分:1)
你需要使用proc:
validates :company_id, :inclusion => { :in => proc { |record| Company.where(:user_id => record.user_id) } }
我希望语法正确,我没有检查它:)