如何在一种类型的用户和用户之间建立关系?一个模型?

时间:2012-12-31 07:16:28

标签: ruby-on-rails ruby-on-rails-3

所以我有VendorUser。用户可以拥有多种角色中的一种:superadminadminvendoruser

我的Vendor模型本质上是一个"商店"。

我希望具有角色vendor的用户拥有模型Vendor的实例。但并非所有用户都拥有模型Vendor的实例。

在我的Vendor模型中,我有这个:

belongs_to :owner, :class_name => "User",
    :foreign_key => "user_id"   

但我不确定如何处理User模型,因为不是每个User都会有一个或有很多供应商。

我该如何处理?

2 个答案:

答案 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,然后控制来自控制器的访问权。