为什么这里没有生成链接?

时间:2011-05-03 18:12:33

标签: ruby-on-rails ruby ruby-on-rails-3

我的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

虽然邀请是创建的,但似乎没有为邀请生成网址。也许是因为我没有保存它?我该如何修复方法?

1 个答案:

答案 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可以避免运行验证并基本上强制保存。这可能有助于用户记录无效的情况,例如由于某种原因对旧记录施加新要求,但您仍希望保存这一更改。

相关问题