在rails上创建一个站点,用户可以在该站点上加入组并能够与组进行交互

Yed*_*die 1 ruby ruby-on-rails devise

我最近开始创建一个网站,用户可以加入群组并能够与群组互动.到目前为止,我已经为用户使用了设计,但我现在想知道我用什么来创建用户配置文件甚至组配置文件.这是我的第一个rails应用程序,我只需要一些关于从哪里开始的指导?我需要什么工具?这样做的最佳方式是什么?

Sam*_*les 5

Rails是您需要的唯一工具.首先,您需要在应用程序中创建其他模型.根据您的描述,我看到UserProfile和Group.Rails的生成器命令将为您存根:

$ rails generate model UserProfile
$ rails generate model Group
$ rails generate model Membership
Run Code Online (Sandbox Code Playgroud)

现在,您将在app/models目录中拥有user_profile.rb和group.rb,以及db/migrate/create .rb中的迁移.接下来,您需要通过编辑迁移脚本告诉rails在数据库中创建哪些字段.您可以在此处随意添加任何内容,但您至少需要外键来关联您的数据.

def CreateUserProfiles < ActiveRecord::Migration
    create_table :user_profiles do |t|
        t.belongs_to :user
        ...
Run Code Online (Sandbox Code Playgroud)

def CreateMemberships < ActiveRecord::Migration
    create_table :memberships
        t.belongs_to :user
        t.belongs_to :group
        ...
Run Code Online (Sandbox Code Playgroud)

现在,您可以执行迁移以为您创建数据库表:

$ rake db:migrate
Run Code Online (Sandbox Code Playgroud)

您可以使用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
Run Code Online (Sandbox Code Playgroud)

现在,您拥有了为用户提供配置文件所需的所有工具:

UserProfile.create(:user => User.first, :attr => "value", ...)
Run Code Online (Sandbox Code Playgroud)

或者将用户放入组中:

group = Group.create(:name => "Group 1")
group.users << User.first
Run Code Online (Sandbox Code Playgroud)

在节省时间时使用工具,但学会使用他们首先依赖的工具-Rails.查看Rails指南,它们非常棒.