Создание сайта на рельсах, где пользователи смогут присоединяться к группам и смогут взаимодействовать с группой - PullRequest
1 голос
/ 04 февраля 2011

Я недавно начал создавать сайт, где пользователи смогут присоединяться к группам и иметь возможность взаимодействовать с группой. До сих пор я использовал devise для пользователей, но теперь мне интересно, что я могу использовать для создания профилей пользователей и даже профиля групп. Это моя первая заявка на рельсы, и мне просто нужно несколько советов о том, куда идти дальше? Какие инструменты мне понадобятся? Каков наилучший способ сделать это?

1 Ответ

5 голосов
/ 04 февраля 2011

Rails - единственный инструмент, который вам нужен. Сначала вам нужно создать другие модели в вашем приложении. Из вашего описания я вижу UserProfile и группу. Команда генератора Rails заглушит их:

$ rails generate model UserProfile
$ rails generate model Group
$ rails generate model Membership

Теперь у вас будут user_profile.rb и group.rb в каталоге app / models, а также миграции в db / migrate / create .rb. Далее вам нужно сообщить rails, какие поля создать в базе данных, отредактировав скрипт миграции . Вы можете включить сюда все, что пожелаете, но вы по крайней мере захотите, чтобы внешние ключи связывали ваши данные.

def CreateUserProfiles < ActiveRecord::Migration
    create_table :user_profiles do |t|
        t.belongs_to :user
        ...

и

def CreateMemberships < ActiveRecord::Migration
    create_table :memberships
        t.belongs_to :user
        t.belongs_to :group
        ...

Теперь вы можете выполнить ваши миграции, чтобы создать таблицы базы данных для вас:

$ rake db:migrate

И вы можете использовать методы класса ассоциации ActiveRecord для определения этих отношений в коде, чтобы Rails позаботился о SQL за вас.

app/models/membership.rb

class Membership < ActiveRecord::Base
    belongs_to :user
    belongs_to :group
end

app/models/user.rb

class User < ActiveRecord::Base
    has_one :user_profile
    has_many :memberships
    has_many :groups, :through => :memberships
    ...
end

app/models/group.rb

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

app/models/user_profile.rb

class UserProfile < ActiveRecord::Base
    belongs_to :user
end

Теперь у вас есть все инструменты, необходимые для создания профилей пользователей:

UserProfile.create(:user => User.first, :attr => "value", ...)

Или поместить пользователя в группу:

group = Group.create(:name => "Group 1")
group.users << User.first

Используйте инструменты, когда они экономят ваше время, но учитесь использовать инструмент, от которого они все зависят в первую очередь - Rails. Проверьте Направляющие рельсов , они превосходны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...