0

私は次のようにプロファイルオブジェクトを構築しようとしています:

@user.profiles.build(params[:profile])

ビルドが呼び出されると、検証が実行Profileされますが、アップロードされた画像があり、それが含まれている場合に問題が発生しますparams[:profile]

そこにイメージがあり、ビルドが呼び出されると、検証が実行され、user_id が proc に渡されないため、ユーザーを見つけることができません。しかし、user_id に画像がない場合params[:profile]は渡され、ユーザーが検索されます。

私のモデル:

class User < ActiveRecord::Base
  attr_accessor :require_profile_name
  has_may :profiles
end

class Profile < ActiveRecord::Base
  attr_accessor :name, :image
  belongs_to :user
  validates :name, if: Proc.new { |profile| profile.user.require_profile_name }
end

Google を調べても同じ問題を抱えている人は誰もいないので、どこから始めればよいか途方に暮れています。

これについて助けてくれてありがとう。

4

1 に答える 1

0

プロファイル クラスの場合、名前の検証を確認する前に、ユーザーが最初に設定されていることを確認する必要があります。

class Profile < ActiveRecord::Base
  attr_accessor :name, :image
  belongs_to :user
  validates :user, presence: true
  validates :name, presence: true, if: proc { |profile| profile.user.try(:require_profile_name) }
end

これにより、ユーザーが設定されていない場合、レコードは保存されません。ユーザーが設定されており、プロファイル名が必要な場合、名前が空白の場合も検証に失敗します。

于 2013-03-28T16:45:05.647 に答える