我認爲你有一個對一個(每個用戶一個類別)的關係設置,而不是一個一對多(每用戶許多類別)。如果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