shops habtm products
反之亦然。使用Cancan保证HABTM关系
user has many shops
和shop belongs to user
以我Product=>:create
形式,我可以检查所有的产物属于使用复选框(它发送shop_ids作为PARAMS)的商店。
什么是确保用户不会创建一个产品,它关联到他不康康舞自己的店最好的方法是什么?
这似乎是一个非常简单的用例,但我还没有找到一个很好的例子=(
目前,我这样做。
can [:create], Product, do |p|
(p.shop_ids - user.shop_ids).empty?
end
从此,我读它作为p.shop_ids
必须是user.shop_ids
一个完整的子集,以获得减法运算之后的空数组。
我不知道,如果我做的任何逻辑上的缺陷或者是有检查?
的一个简单的方法210
我宁愿让这个User模型验证。 – clyfe 2012-03-02 10:11:05
是否有内置的方式或写入自定义验证?我的想法是,这是一个需要'授权'的动作,以便即使在我们通过':validate => false'保存记录的情况下,授权仍然会启动并且说您没有权限创建这个? – 2012-03-02 10:27:36
没有内置。我在模型中执行它,因为我觉得它是一个完整性约束。我相信它也可以在DB中完成。如果您手工跳过验证,您也可以手动跳过授权。 – clyfe 2012-03-02 10:47:39