我认为你有一个对一个(每个用户一个类别)的关系设置,而不是一个一对多(每用户许多类别)。如果User
型号中有category_id
,则应该进行以下设置。
# in User.rb
belongs_to :category
# in Category.rb
has_many :users
# in CategoriesController
@category = current_user.category
如果你想有每个用户的多个类别,比我建议使用一个链接表(如模型UserCategory
)与user_id
和category_id
。
# in UserCategory.rb
belongs_to :user
belongs_to :category
# in User.rb
has_many :user_categories
has_many :categories, :through => :user_categories
# in Category.rb
has_many :user_categories
has_many :users, :through => :user_categories
然后,在你Category
控制器,你可以用你的代码从上面给定用户抓住所有类别。
# in CategoriesController.rb
@categories = current_user.categories
我不确定我是否确切知道你在哪些类别中引入。这是在控制器?视图?假设您在用户has_many:categories中使用关系,则可以使用current_user.categories和current_user.categories.build(在您的控制器中)。如果您可以举例说明您的代码在哪里以及它的使用方式,那么这可能会让我们对安全性有更好的了解。它实际上听起来像是在视图内而不是控制器中为当前用户过滤,这对我来说似乎是一个坏主意。 – 2011-04-27 14:18:11
编辑问题以解决您的意见。过滤确实发生在控制器上。有没有办法,以这种方式完成你可能会看到其他人的信息? – Lievcin 2011-04-27 14:30:12