2

Rails 3で一般的な構造上の問題が発生しており、新しいroutes.rbで少し混乱しています。ヘルプやガイダンスをありがとう。

ネストされたリソースを持つフォーラムアプリケーションがあります。セクション、トピック、および返信があります。ルート.rb構造は次のようになります。

resources :sections do
   resources :topics do
     resources :replies
   end
end

私のsection.rb:

  has_many :topics
  has_many :replies, :through => :topics

私のtopic.rb:

  belongs_to :section
  has_many :replies

私のreply.rb:

  belongs_to :topic

そして、これは素晴らしく機能しています。今ここで私は混乱しています。

Deviseを使用してユーザーコントローラーを追加し、ユーザー名のログイン/ログアウトシステムが機能しています。'current_user'を返信やトピックに接続しようとしています。モデルを修正する方法については良い考えがあると思いますが、routes.rbファイルで何をすべきか非常に混乱しています。

user.rbの場合、「has_many:topics」と「has_many:replies、:through =>:topics」を追加する必要があると思います。そして、私のトピックでは、「belongs_to:user」を追加する必要があります。reply.rbは同じままだと思いますか?

ルートについては、私はちょっと困惑しています。ルートを編集してユーザーを追加すると、sectionid / username / topicid /のようなパスが得られますが、必ずしもそのようなルートにユーザー名を保存する必要はありません。したがって、セクションとトピックの間にユーザーをネストすることはできますか、それともroutes.rbファイルからユーザーを除外することはできますか。

4

1 に答える 1

2

ユーザーをパスから外すことができます。リソースブロックに含まずに、ルートの上にdevise_for:usersを含めるだけです。

ユーザーには多くのトピックがあり、多くの返信があります。トピックと返信はどちらもユーザーに帰属します。

必要なコントローラーにはさらに多くの変更があります。before_filterを追加して、ユーザーが認証されているかどうかを確認する必要があります。さらに、ほとんどのコントローラーメソッドを変更して、ユーザーが認証されているだけでなく、承認されているかどうかを確認します。たとえば、編集ルックアップの場合は、current_user.repliesを実行します。詳細については、こちら(私自身のページ)をご覧ください:http://www.communityguides.eu/articles/4

于 2011-04-06T07:14:38.093 に答える