这样的检查会在创建的对象上正确吗?
我觉得这不是真的正确。
unless DailyTip.find_by_slug(tip[:slug]).persisted?
daily_tip = DailyTip.create!(
tip: tip[:tip],
...
)
day = ProgramDay.find_by_day(tip[:program_day])
day.update_attributes(daily_tip_id: daily_tip.id)
else
puts 'Video tip already created.'
end
答案 0 :(得分:0)
这一行
DailyTip.find_by_slug(tip[:slug]).persisted?
没有多大意义,因为find_by_slug将查询数据库,如果找到了某些内容,它将检查它是否已保存到数据库中。如果找不到任何内容,您的代码将会破坏:
undefined method `persisted?' for nil:NilClass
我认为你打算写这样的东西:;
if DailyTip.find_by(slug: tip[:slug])
puts "Video tip already created"
else
daily_tip = DailyTip.create! tip: tip[:tip]
day = ProgramDay.find_by_day(tip[:program_day])
day.update_attributes(daily_tip_id: daily_tip.id)
end
最后,很大程度上取决于您的应用逻辑。我希望这有点帮助。