私は、あなたの多くが睡眠中に避けることができると確信している問題を解決する助けを得たいと思っています.
私は、habtm 関係にある 2 つのモデルを持っています。1 つのパッケージに複数の場所を含めることができ、1 つの場所に複数のパッケージを含めることができます。ロケーション モデルが検証に失敗した場合 (ロケーション アドレスが空の場合など)、ActiveRecord:RecordInvalid 例外が発生します。package.save を呼び出すと、Rails が自動的に save! を呼び出すため、このエラーが発生することを理解しています。場所の関連付けについて。
エラーを回避する方法、または少なくともエラーを救う方法がわかりません。問題を解決する方法とRailsのベストプラクティスの両方について、何か良いアドバイスはありますか?
コードは次のとおりです。
def create
@package = current_user.package.build(params[:package])
package_location
if @package.save
flash[:success] = "Package created!"
redirect_to root_path
else
render 'pages/home'
end
end
def package_location
gps_processing if !session[:gps_aware]
@package.locations.build(:address => session[:address])
end
def gps_processing
session[:address] = [params[:story][:street_address], params[:story][:city], params[:story][:state], params[:story][:country]].compact.join(', ')
end
class Package< ActiveRecord::Base
belongs_to :user
has_and_belongs_to_many :locations
validates :content, :presence => true,
:length => {:maximum => 140}
validates :user_id, :presence => true
default_scope :order => 'package.created_at DESC'
end
class Location < ActiveRecord::Base
attr_accessible :lng, :lat, :address
validates :lng, :presence => true
validates :lat, :presence => true
validates :address, :presence => true
geocoded_by :full_street_address, :latitude => :lat, :longitude => :lng
before_validation :geocode
has_and_belongs_to_many :packages
def full_street_address
address
end
end
` 前もって助けてくれてありがとう!