0

これがどのように機能するかについて少し混乱しています。私はいくつかのチュートリアルに従ってきましたが、サインアップしたユーザーが特定の権限を持っていることをどのように知ることができますか?

たとえば、ユーザーに次の 2 つの異なる役割から選択してもらいたいと考えています。

サインアップ画面のビジネスまたは居住者

コンソールでこれらのロール名を Role テーブルに追加する必要がありますか? または、これら 2 つの異なるロール タイプをデータベースに追加する簡単な方法はありますか?

私が追加しました

  <% for role in Role.find(:all) %>
    <div>
      <%= check_box_tag "user[role_ids][]", role.id, @user.roles.include?(role) %>
      <%= role.name %>
    </div>
  <% end %>

しかし、私のビューには何も表示されません。データベースに特定のロール名がなく、表示されていないためだと思います。

ロールを追加するには、コンソールが最適な方法ですか? または、将来、簡単に操作できる別の方法はありますか?

ありがとう!

4

1 に答える 1

1

実行するための 3 つの可能性が思い浮かびます。

  1. 管理者の役割が MVC を介して追加の役割を追加できるようにする管理インターフェイスを作成する
  2. あなたが述べたように、コンソールを介して新しい役割を追加します
  3. データベースをシードする

管理者が Rails コンソールにアクセスできる場合 (そして、管理者がその使用方法を知っている場合)、MVC に他の管理機能が組み込まれていない限り、オプション 1 はやり過ぎのように思えます。

個人的には、最後のオプションを選択します。コンソールから追加するのと同じくらい簡単ですが、コードへの変更の履歴を実際にコミットするという追加の利点があります。

DB をシードする名目上最も簡単な方法は、seeds.rb. その中で、初期シードまたは後続シードのいずれかでデータベースを適切にシードするために必要なコマンドを記述できます。

# db/seeds.rb
cities = Role.create([{ name: 'Business' }, { name: 'Resident' }])

次に、コマンド ラインから を実行しrake db:seedます。あなたのすべてのステートメントはseed.rb順番に実行されます。エラー (またはレコードの重複などのその他の問題) がある場合、ActiveRecord はそれに応じて処理します (つまり、サイレント エラーについて心配する必要はありません)。

注意として、シード処理を容易にするシード処理ライブラリがいくつかあります。個人的には使っていませんが、シードバンクのワークフローはにかなっているようです。

于 2013-06-30T21:43:50.370 に答える