2012-05-01 62 views
2

我在产品和类别之间有HABTM关系。这些类别属于用户。Rails 3:验证记录属于用户

在我的产品形式中,我只显示当前用户的复选框。但是我也想在模型上验证它,所以用户不能伪造POST变量并将其分配给无效的类别。

我该如何做这种验证?

例如:给出category_id 5,我必须检查这个类别是否属于current_user.id(由devise提供)。

谢谢。

回答

1

您可以将attr_accessor: creator_id加入您的Post型号。 (creator_id不在数据库中)

从形式到 Postcreator_id

和发送current_user.id

然后使用模型回调。例如after_validation

after_validation do 
    if User.find(creator_id).categories.pluck(:id).include?(category_id) 
    true 
    else 
    errors.add :category, "is invalid for user" 
    end 
end