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

时间:2011-02-04 01:40:39

标签: ruby-on-rails ruby devise

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

1 个答案:

答案 0 :(得分:5)

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

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

现在,您的app / models目录中将包含user_profile.rb和group.rb,以及db / migrate / create .rb中的迁移。接下来,您需要通过editing the migration script告诉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。查看Rails Guides,它们非常棒。