0

リソースを想像してください: /users/14/notifications. いくつかの HTTP 動詞/メソッドを実装しています: GET、GET/edit、POST、DELETE。

4 つのすべてのアクションは、ロジックのごく一部を共有しています。すべての通知を取得し、簡単にアクセスできるようにハッシュを作成し、特定のユーザー アクセスを別の場所から取得して何か特別なことを行います。いくつかの loc (7 としましょう)。

これらの 7 つの loc を再利用してロジックを DRY に保つにはどうすればよいですか? Rails の ANY 動詞について聞いたことがありますが、使い方がわかりません。また、4 つの実際のアクションでその結果 (いくつかの変数) を使用する方法もわかりません。

私は次のようなものを期待します:

def any
  @notifications = Notification.find_by etc...
  // do something here to create
  @reverse_notifications_hash = ...
  // and something else
  @super_special_access = ...
end

def show
  // Only specific logic here
  // Render using @notifications
end

def edit
  // Only specific logic here
  // Render form using @notifications,
  // @reverse_notifications_hash and
  // @super_special_access
end

def update 
  // Only specific logic here
  // Fetch something else special to not override stuff or be extra efficient
  more_special = ...
  // Do update stuff with @notifications, @super_special_access and more_special
end

お気づきかもしれませんが、私は Ruby/Railser のプロではありません。(構文が間違っている可能性もあります。) でもとても興味があります。

RoRで実際にどのように機能しますか?

4

1 に答える 1

1

before フィルターを使用して共通コードを実行してみてください。あなたの例では、この行をコントローラーに追加できますbefore_filter :any

編集:

anyまた、コントローラ アクションとして公開できないように、可視性をプライベートまたは保護に変更しました。

于 2012-07-25T14:38:41.850 に答える