在 Ruby 中,是否可以在 `before_save` 回调中创建相关模型的新实例时执行验证?
上面的代码运行良好,但我希望在if语句中添加类似于这样的内容:
此代码的问题在于,track.valid? 总是返回 false,因为 Track 模型验证了 podcast_id 的存在。我不太想在 after_create 回调函数中这样做,因为如果 tracklist 无法通过验证,我实际上希望取消 podcast 的创建。那么我该怎么办?
class Podcast < ActiveRecord::Base
has_many :tracks, :dependent=>:destroy
before_save :generate_tracks
# creates the tracks played in the podcast
def generate_tracks
json = Hashie::Mash.new HTTParty.get("#{self.json_url}")
json.sections.each do |section|
if section.section_type=="track"
track = self.tracks.build :name=>section.track.name
end
end
end
end
上面的代码运行良好,但我希望在if语句中添加类似于这样的内容:
unless track.valid?
errors[:base] << "OOPS, something went wrong whilst trying to build tracklist."
return false
end
此代码的问题在于,track.valid? 总是返回 false,因为 Track 模型验证了 podcast_id 的存在。我不太想在 after_create 回调函数中这样做,因为如果 tracklist 无法通过验证,我实际上希望取消 podcast 的创建。那么我该怎么办?
def valid? true end
。 - Rajkamal Subramanian