2011-02-04 14 views
1

最近、ユーザーがグループに参加してグループとやり取りできるサイトの作成が開始されました。これまで私はユーザーのために勉強してきましたが、私はユーザープロファイルやグループプロファイルを作成するために何を使用するのかと不思議に思っています。これは私の最初のレールのアプリケーションであり、私はちょうどここから行く場所についてのいくつかのガイダンスが必要ですか?どんなツールが必要ですか?これを行う最善の方法は何ですか?ユーザーがグループに参加してグループとやりとりできるようなサイトを作成する

+0

ユーザーとグループの表を事前に入力しようとしていますか?または、サイト訪問者が独自のユーザーアカウントとグループを作成する方法について不思議ですか? – Schwartzie

+0

ユーザーがプロファイルを作成し、グループに参加してグループを編集できるように、コード作成方法がわかります。 – Yeddie

答えて

5

必要なツールは、Railsだけです。まず、アプリケーションに他のモデルを作成する必要があります。あなたの説明から私はUserProfileとグループを見る。 Railsのジェネレータコマンドはあなたのためにそれらをスタブアウトします:

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

今、あなたはあなたのアプリケーション/モデルディレクトリにuser_profile.rbとgroup.rbを持っています、だけでなく、デシベル/移行/ でのマイグレーションが .RBを作成します。次に、データベースに作成するフィールドをediting the migration scriptでレールに伝える必要があります。ここにあなたが望むものは自由に含めることができますが、少なくとも外部キーにあなたのデータを関連させたいと思うでしょう。

$ rake db:migrate 

そして、あなたは、コード内でそれらの関係を定義するためにActiveRecordのアソシエーションクラスのメソッドを使用することができます。

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 
     ... 

今、あなたはあなたのためにデータベース表を作成するためにあなたの移行を実行することができますRailsがあなたのためにSQLを処理するようにします。

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

またはグループにユーザーを置くために:

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

のツールを使用し、それら

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 

は、今あなたがユーザープロファイルを与える必要がある場所ですべてのツールを持っています時間を節約できますが、すべてが最初のRailsに依存するツールを使用する方法を学びます。 Rails Guidesをチェックしてください。優れています。

+0

+1私にそれを打つ。多対多を示す素晴らしい答え:through: –

+0

すごいサムCありがとう。私はこれを試して、それがどうなるかを見てみましょう。 – Yeddie

関連する問題