Я надеюсь получить помощь в решении проблемы, которую, я уверен, многие из вас могли бы избежать во сне.
У меня есть две модели отношений habtm. Пакет может иметь много местоположений, и местоположение может иметь много пакетов. Если моя модель местоположения не проходит проверку (например, из-за пустого адреса местоположения), я получаю исключение anctive Active: RecordInvalid. Я понимаю, что получаю эту ошибку, потому что когда я вызываю package.save, rails автоматически вызывает save! на месте ассоциации.
Я не уверен, как избежать ошибки или хотя бы спасти ошибку. Есть ли у кого-нибудь из вас полезные советы, как решить проблему, так и лучшие практики Rails?
Вот код: '
def create
@pacakge = 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
`
Заранее спасибо за помощь!