我的signeduser模型中有这两种方法:
def build_invitation
self.create_invitation
end
def generate_url
self.invitation.invitation_url = "http://www.dreamstill.com/?id=#{self.invitation.id}"
end
我还有一个自定义rake任务,它调用这两个方法:
task :generate_url => :environment do
SignedUser.all.each do |user|
user.build_invitation
user.generate_url
end
end
虽然邀请是创建的,但似乎没有为邀请生成网址。也许是因为我没有保存它?我该如何修复方法?
答案 0 :(得分:2)
看起来您忘记保存作业的结果,并且在丢弃对象时它会丢失。
task :generate_url => :environment do
SignedUser.all.each do |user|
user.build_invitation
user.generate_url
user.save(false)
end
end
将false
作为参数传递给save
可以避免运行验证并基本上强制保存。这可能有助于用户记录无效的情况,例如由于某种原因对旧记录施加新要求,但您仍希望保存这一更改。