在我的模型中,我有一个after_create回调来触发该方法:
class Job < ActiveRecord::Base
after_create :update_vanity_url
private
def update_vanity_url
self.vanity_url = '/jobs/' + company.slug + '/' + slug + '/' + id.to_s + '/'
end
end
这将为我的工作设置一个自定义网址,但是,当我尝试在优惠券工厂中使用它时,该网址未保存。优惠券是在未分配工作的情况下创建的。仅当使用优惠券时,它才与一个作业配对。我称其为已执行:
FactoryGirl.define do
factory :coupon do
code { rand(25**25) }
percent_discount { rand(100**1) }
start_at { Time.now }
end_at { 30.day.from_now }
trait :executed do |c|
association :job, factory: [:job, :purchased]
c.executed_at { Time.now }
end
end
end
理想情况下,我希望能够调用FactoryGirl.create(:coupon, :executed)
哪个方法,但是after_create永远不会被调用...。
带有可选模型关联的Rails FactoryGirl Factory包括此设置的更多详细信息。
根据下面的每个问题评论,我添加了我的路线部分和更新:
路线
resources :jobs, only: [:new] do
collection do
post 'new', to: 'jobs#create'
end
get '/review', to: 'reviews#new'
patch '/review', to: 'reviews#update'
get '/payment', to: 'payments#new'
patch '/payment', to: 'payments#update'
end
match '/jobs/:company_slug/:job_slug/:id', via: :get, to: 'jobs#show'
我研究了几个小时,这就是我发现的工作。原来不是FactoryGirl,而是模型本身...我想...
def update_vanity_url
self.vanity_url = '/jobs/' + company.slug + '/' + slug + '/' + id.to_s + '/'
save
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句