2011-08-11 14 views
1

私のユーザー認証を処理するためにdeviseを使用し、ユーザーモデルでIveは各ユーザーhas_one:roleを指定しました。ユーザーレコードを更新するhas_one関係

私のすべてのユーザーの役割/権限を保持するために別のテーブルを使用していますが、私はどのように役割を更新するのだろうか?

EDIT - ここに私のユーザモデルがある

has_one :role, :dependent => :destroy 
    accepts_nested_attributes_for :role, :allow_destroy => true 
    attr_accessible :stuff.... :role 

私のロールモデル

belongs_to :user 

アイブ氏は、私のフォームにこれを追加しました:

<%= f.fields_for :role, Role.new do |r| %> 
<li class="full_width"> 
    <%= r.label "User type" %> 
    <%= r.select(:status, %w[member artist commercial],{:include_blank => false}) %> 
</li> 
<% end %> 

をしかし、それはロール・レコードを保存したことがありません、私はそのユーザーモデルdidntがattr_accessibleを持っていないので、私は推測する:ロールので私はそれを設定し、今私が保存しようとすると私はアソシエートionTypeMismatchエラー

EDIT - accepts_attributes_forを追加しましたが、エラーは表示されませんが、役割レコードは保存されません。マスアサイン保護することはできません属性:コンソールが

WARNINGを示し、あなたが貼り付けられているコードスニペットからrole_attributes

+0

この関係を決定する 'User'モデルには何がありますか?私の推測では、あなたは 'accepts_nested_attributes_for'コールが欠けているということです。 –

+0

ああ、私はそれを忘れてしまった。それを追加しましたが、役割はdoesntはthoを保存しました – rugbert

答えて

0

をあなたは新しい役割とユーザーとの間の関係を構築しているところ、それははっきりしていません。保存する前にユーザーとロールを関連付けるには、@ user.build_role(...)や@ role.build_user(...)などの処理が必要な場合があります。

関連する問題