在我的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
似乎虽然创建了邀请,但没有为邀请生成url。也许是因为我没有保存它?我如何修复方法?
看起来好像你忘记保存你的赋值结果,当对象被丢弃时它就丢失了。
task :generate_url => :environment do
SignedUser.all.each do |user|
user.build_invitation
user.generate_url
user.save(false)
end
end
将false
作为参数传递给save
避免运行验证,并且基本上强制保存。这可能有助于处理用户记录无效的情况,例如由于某种原因将新需求强加于旧记录,但无论如何您都想保存此更改。