所以我有Vendor
和User
。用户可以拥有多种角色中的一种:superadmin
,admin
,vendor
,user
。
我的Vendor
模型本质上是一个"商店"。
我希望具有角色vendor
的用户拥有模型Vendor
的实例。但并非所有用户都拥有模型Vendor
的实例。
在我的Vendor
模型中,我有这个:
belongs_to :owner, :class_name => "User",
:foreign_key => "user_id"
但我不确定如何处理User
模型,因为不是每个User
都会有一个或有很多供应商。
我该如何处理?
答案 0 :(得分:2)
我会这样做:
User
has_one :store
Store
belongs_to :user
只允许供应商用户进行商店销售。在商店控制器
before_filter :authenticate_vendor!
def authenticate_vendor!
# redirect unless user is vendor
end
答案 1 :(得分:1)
我建议让Ryan Bates查看CanCan宝石,特别是this functionality。这可以帮助您建立角色和控制Vendor对象的权限。
就协会而言,您仍然应该根据用例的声音使用has_many vendors
,然后控制来自控制器的访问权。