0

私には2つのモデルユーザーと伝記があり、どちらも1対1の関連付けがあり、ユーザーに1つの伝記のみを追加したいと考えています。モデルは次のとおりです。-

 class Biography < ActiveRecord::Base
  attr_accessible :biography, :date, :title, :individual_id  
  belongs_to :user
 end

 class User < ActiveRecord::Base
  has_one :biography
 end

ユーザーが1つの経歴のみを追加できるように、ユーザーを検証するにはどうすればよいですか。助けてください!

4

1 に答える 1

1

あなたはすでにこのリンクをチェックしています。(ソース)

所属_toアソシエーションは、宣言モデルの各インスタンスが他のモデルの1つのインスタンスに「属する」ように、別のモデルとの1対1の接続を設定します。

has_oneアソシエーションは、別のモデルとの1対1の接続も設定しますが、セマンティクス(および結果)が多少異なります。この関連付けは、モデルの各インスタンスが別のモデルの1つのインスタンスを含むか所有していることを示します。

ただし、必要に応じて、user.biographyをチェックする:before_saveメソッドを追加しても、予期しないものは返されませんが、これは必要ではないと思います。

コメント後に編集:

before_filterのようなものを試してください...

before_filter :check_user, :only => [:new]

これにより、コントローラーアクションが呼び出される前にメソッドが呼び出されます。次に、current_userに経歴があることを確認し、それに誘導するメソッドを作成できます。これが出発点です。

def check_user
 current_user.nil? ? redirect_to(new_biography_path) : redirect_to(edit_biography_path) 
end

それが役に立てば幸い。

于 2012-08-27T10:44:19.567 に答える