私のRuby on Railsアプリケーションでは、プロファイル用に新しいプロファイルと新しい統計を作成したいと思います。まず、ユーザーモデルから関連するメソッドを呼び出し、次にプロファイルモデルから呼び出します。私はこれを持って私のプロファイルモデル(profiles.rb)に他のコントローラに関連するモデルからメソッドを正しく呼び出す方法は?
...
has_one :profile
...
before_save :inizialize_user
...
private
def inizialize_user
@user_profile = Profile.new
self.user_profile_id = @user_profile.id
end
...:
そう...
を...私のユーザモデル(user.rb)に私はこれを持っています 「検査」@profile_statistic結果、新しいオブジェクト(!正しい)
012:「before_save」が新しいプロファイル統計をインスタンス上のコードの第2のブロックにおいて...
belongs_to :user
...
before_save :inizialize_profile
private
def inizialize_profile
@profile_statistic = ProfileStatistic.new
end
、 @user_profile結果はnil(!それが新しいプロファイルオブジェクトでなければなりません)
最後の部分を「検査」 :それは新しいプロファイルをインスタンス化しません「before_save」上のコードの最初のブロックで
、私の問題です。それはなぜ起こるのですか?
持つようにしたい:新しいプロファイルオブジェクトを作成しないようです。 – user502052
ProfileStatistic.createはレコードをデータベースに保存します。したがって、検証に失敗すると動作しません。たとえば、 "validates_presence_of:name"がある場合は、このProfileStatistic.create(:name => '希望する名前')のように作成できます。すべての検証が成功したプロファイル統計を作成してください。コンソールで "p = ProfileStatistic.create"でテストできます。コンソールが「偽」を返す場合は、「p.errors」を使用する理由を参照してください。 –