Devise、CanCan、およびRolifyに基づいて私的リソースを処理するアプリケーションを作成しています。Railsユーザーフォームを使用してrolifyロールを追加
ユーザーを登録/編集するための管理インターフェースを作成している間は、ユーザーに登録者を許可したくないため、Devise登録が無効になっています。
今私はユーザーの役割を扱っています。管理者がユーザーを作成し、同じフォームを使用して役割を設定できるようにしたいと考えています。私は、レールとRubyにかなり新しいので、どのような関係がrolifyを使用しているのか分かりません.Lolifyは、より明確な関係の代わりにrolify
メソッドを追加しました。
現在、ユーザーごとに1つの役割しか必要としません。だから誰かがロールを変更するユーザーを編集した場合、私はすべて@user.roles
を削除し、新しいものを設定します。
私は現在、単純なハッキングを使用して動作させています。 私はフォームに選択フィールドを追加しました。これは、Role
のコレクションを使用して、役割の選択を提供しています。その後create
とupdate
メソッドの内部で、私はこれをやっている:
role = params[:user][:role]
params[:user].delete :role
@user = User.new(params[:user])
respond_to do |format|
if @user.save # update_attributes inside update
@user.add_role role
# ...
end
end
をあなたは私が直接Role
モデルとの相互作用が、提供さadd_role
方法を使用していない見ているよう。これはまた、現在のロールを取得して、更新ビューがselectの適切なデフォルト値を設定できるようにするために別の問題を引き起こします(ONEロールの存在を検証する方法がわからないという最も重要な事実の横にあります)。
これはあまりにも汚い解決策になるので、私はいくつかの視点を持ちたいと思います。私はこの:-(
に取り組んですべての一日を過ごしたあなたには、いくつかの情報が必要な場合は私に聞いてください。私は、ネストされたリソースに関するscreenscastを見てる
PSが、DBに私はそれが使っていることがわかりありましたusers_roles
を追跡するために、私はそれを行う方法を理解していないよ3番目のテーブル。
lol ...私はあなたの道を行くことになった、Rolify宝石は把握するためにあまりにも多くの時間を取っていた。 – Benjamin
笑、いいです。それはまだ有効なツールのままですが、簡単なこととして、簡単な文字列/整数フィールドを作成する方がはるかに簡単だと思います。 –