1

私が探しているのは、ユーザーがプロジェクトを作成し、そのプロジェクトの管理者になることができるシステムをセットアップするための適切な方法です。その後、ユーザーは他の管理者をプロジェクトに追加できます。最後に、他の非管理者ユーザーがプロジェクトに参加できます。

ユーザーがプロジェクトの管理者であるかどうかを確認して、編集/更新権限があるかどうかを確認できるようにしたいと思います。何かご意見は?

おそらくusers_projectsテーブルとprojects_adminsテーブルがあると思いますが、それがRailsの関係にどのように変換されるのか理解できません。

ありがとう!

4

1 に答える 1

1

わかりました。試してみますが、ここではあまり多くのコードを使用していません。

私はここに3つのモデルを見ます:

  • ユーザー
  • 計画
  • ProjectAdmin

最初の2つは単純なモデルで、いくつかの属性があります。3つ目は、2つの間の関係であり、:m関係になります。したがって、ここでは、has-many-throughの関係を使用するのが最適です。

class ProjectAdmin < ActiveRecord::Base
  belongs_to :project
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :project_admins
  has_many :projects, :through => :project_admins
end

class Project < ActiveRecord::Base
  has_many :project_admins
  has_many :admins, :through => :project_admins
end

もちろん、移行によって3つのテーブルを追加で作成し、後でProjectUserモデルとして名前が付けられたプロジェクトユーザー用の同様の関係を追加する必要があります。少なくとも、関係についてのレールガイドのセクション「has-many:through」をご覧ください

作成者をプロジェクトに追加するには、これは2つの間の1対1の関係である必要があるため、次の条件を満たしている必要があります。

class Project
  has_one :creator, :class_name => "User"
end

(そしてもちろんcreator_id移行中)

于 2012-04-20T20:31:28.217 に答える