2016-04-11 58 views
0

Birçok kullanıcı ve bir yönetici vardır. Kullanıcılar bu grupları katılmak için gruplar oluşturabilir ve istekleri gönderebilir/alabilir. Bu sistem iyi çalışıyor. Artık, yöneticinin oluşturduğu ayrı "süper gruplar" yapıyorum. Bu "süper gruplar" isteklere güvenmiyor, randevuya güveniyorlar. Yönetici bir kullanıcıyı seçer, bir grup seçer ve seçilen kullanıcıyı seçilen gruba ekler. Bunu nasıl başarabilirim?Kullanıcıları yönetici olarak gruplara ayırma

  • Yöneticinin basitçe bir kullanıcı seçebilmesini (profil sayfasında), bir grup seçebilmesini (tercihen açılır menüden) ve sonra ilişkilendirmeyi nasıl kurarım?

Örneğin, bir yönetici olarak, kullanıcının profil sayfasına gitmek istiyorum ve profil sayfasında bir açılır menü (yalnızca yönetici tarafından erişilebilir) var ve kullanıcıyı, tercih ettiğim gruba eklemek istiyorum . Bunu nasıl başarabilirim? Bir form türü ile mi? Boole alanı mı? Birleştirme yöntemini oluşturmak için bir ekleme yöntemi (< <) ekleme eylemi oluşturup bir grup için bir seçme etiketine ve sonra da bir gönder gönder düğmesi ekleyebilir miyim? Sadece genel yönde işaret edilmem gerekiyor ve bence başarabiliyorum.

Dikkat çekici

: Bir has_many kullanıyorum: dernek aracılığıyla ilişkiyi yakalamak için. Bir yöneticinin, oluşturulan/silinen çok sayıda "süper grup" var. "Süper grup" birçok üyeye (kullanıcı) sahiptir. Kullanıcıları idari bir gruba nasıl yerleştireceğimi bilmem gerek.

+0

Bunlar arasında kaç model ayrılıyor? Bir "SüperGrup" modeli ve bir "Grup" modeliniz var mı, yoksa bir "SüperGrup" sadece "Grup" türünde mi? Bu modelleri kendi dernekleriyle birlikte ekleyebilecekseniz, bu sizin için bir çözüm önerisinde yardımcı olabilir. – JackCollins

+0

Gruplar ve Süper Gruplar iki ayrı modeldir. –

+0

Gerçekten bir has_many'ye kullanıcı eklemek için en iyi uygulamayı bilmem gerekiyor: açılır menü yoluyla ilişkilendirme. –

cevap

1

UPDATE - Bir has_many'ye kullanıcı ekleme konusunda en iyi uygulama nedir: açılır menü yoluyla ilişkilendirme yoluyla?

Kullanıcı profil sayfasından bir süper gruba kullanıcı eklemek istediğinizden bahsediyorsunuz. Bu, Rails denetleyicisine bir super_group_id iletmek, bu süper grubu bulmak ve daha sonra kullanıcıyı bu gruba eklemek istediğiniz anlamına gelir.

Bu bir seçenektir:

@user = User.find(params[:id]) # or user_id, depending on the controller 
@super_group = SuperGroup.find(params[:super_group_id]) 
@super_group.users << @user 

Orjinal Cevap:

Nasıl anda oluşturma ve Süper Gruplarını siliyorsunuz? Sanırım bir SuperGroupsController var. Bunu gerçekleştirmenin bir yolu, aynı RESTful eylemlerinizle (create, update, vb.) Bir alt denetleyiciye SuperGroups::UsersController sahip olmaktır. Bu dinlendirici eylemler, kullanıcıların gruplara atanmasını/kaldırılmasını sağlar. Bu, yalnızca bir yöneticinin bu eylemleri gerçekleştirdiğinden emin olmak için yapmanız gereken denetimi ayırmanıza olanak tanır.

class SuperGroups::UsersController < ApplicationController 
    before_action :verify_admin # create this method to do the checking 

    def create 
    # create a user super group association here 
    end 

    def delete 
    # remove a user from the super group here 
    end 
end 

Bu görünüşe göre DHH'ye göre en iyi uygulamadır. Bu yöntemi this article okuduktan sonra kullandım ve bu modeli çok temiz ve kullanışlı buldum.

+0

Süper grupların üyeliklerini oluşturan ve silen Süper Grup Birliği denetleyicim var. Şu anda tarif ettiğin gibi bende var. Kaybettiğim şey, ilişkilendirmeye eklenecek bir kullanıcıyı nasıl seçeceğimiz. Örneğin, bir yönetici olarak, kullanıcının profil sayfasına gitmek istiyorum ve profil sayfasında bir açılır menü (yalnızca yönetici tarafından erişilebilir) var ve kullanıcıyı seçtiğim gruba ekliyorum. Bunu nasıl başarabilirim? Bir form türü ile mi? Boole alanı mı? –

+0

Soruyu gelecekteki başvurular için güncelleyeceğim. –

+0

Bir kullanıcı yalnızca bir "SuperGroup" a ait olabilir veya çok farklı "SuperGroup" grubuna ait olabilir mi? – JackCollins