Создавайте «группы», в которые могут вступать пользователи. Какой будет хороший подход? - PullRequest
2 голосов
/ 30 сентября 2011

Я хочу создать «группы», к которым могут присоединиться пользователи, Поток шагов и необходимых вещей у меня в голове, но в коде для его создания немного не хватает, так как я все еще изучаю рельсы. Я хотел бы спросить несколько советов о вашей наилучшей практике ваших идей о том, что необходимо сделать для достижения ниже:

  • Вы можете создать группу с именем 'test'
  • Вы автоматически присоединяетесь к групповому тесту, другие пользователи могут присоединиться к
  • Если хотите посмотреть список пользователей, присоединившихся к моей группе 'test'

Я думаю о создании модели сессий, таких как группы | Имя | Но тогда как я могу хранить несколько пользователей, которые находятся в этом сеансе? Должен ли я сделать массив user_id, например, и сделать дополнительный столбец, как groups | name | user_ids?

Какую наилучшую практику и какие методы rails (3) я мог бы использовать, чтобы получить очень грубую версию вышеуказанной функциональности?

Ответы [ 2 ]

7 голосов
/ 30 сентября 2011

Из того, что я понимаю, это отношения многих ко многим.Таким образом, у вас будет 3 модели:

class User < AR
  has_many :memberships
  has_many :groups, :through => :memberships
end

class Membership < AR
  belongs_to :user
  belongs_to :group
end

class Group < AR
  has_many :memberships
  has_many :users, :through => :memberships
end

и информация о том, какие пользователи принадлежат к группе:

@group = Group.find_by_name("test")
@users_group = @group.users

Обновление

, чтобы обеспечить создание группы пользователем.принадлежит ему:

# in group_controller.rb
def create
  @group = Group.new(params[:group])
  @group.users << current_user

  if @group.save
    # ... etc
  end
end

конечно, current_user должен существовать / быть зарегистрирован с обычным before_filter (если я правильно помню его authenticate! с устройством)

0 голосов
/ 03 октября 2013

Извините, я создаю новую тему, но сейчас я не могу комментировать мой новый статус.

@ charlysis, ваш ответ на этот вопрос включает в себя класс пользователя, членства и группы. Я понимаю необходимость пользователей и групп, но я не понимаю, зачем нам нужен класс членства. Если что-то не имеет смысла иметь класс Groups с Group?

    class User < AR
    belongs_to :group
    belongs_to :groups, :through => :group
    end

    class Groups < AR
    has_many :groups
    has_many :users, :through => :group
    end

    class Group < AR
    has_many :users
    belongs_to :groups
    end

Что ты думаешь?

...