【问题标题】:What is the best way to loop while saving an object in(save it more than once) one click?单击保存(多次保存)对象时循环的最佳方法是什么?
【发布时间】:2012-01-27 06:02:01
【问题描述】:

假设我有一个模型 Token 对象,它有两个字段,user_idtoken_string。我想多次保存该对象(基本上循环)一键保存,每次保存对象时都具有相同的 user_id 但不同的 token_string 值。稍后我希望能够检索由保存的所有 token_strings那个特定的 user_id。关系是 User has_many TokensToken belongs_to User 。我该怎么做?非常感谢。

    def save_more_than_once
     #note here the object already has user_id value but nil token_string
     #loop start here,lets say loops couple of times
     self.token_string = Digest::SHA1.hexdigest("random string")
     save!
     #loop end
     end

【问题讨论】:

  • 您要保存多少次?您是否在每次迭代中创建新的令牌?
  • @Chris 不止一次,可能是任何数字,是的,我想在每次迭代中创建令牌。谢谢

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


【解决方案1】:

听起来你正在寻找的是

def make_a_bunch_of_tokens
  # code to set up user's ID here
  number_of_tokens.times do
    self.tokens.create!(token_string: Digest:SHA1.hexdigest("random string")
  end
  save!   # fixes the user's ID
end

【讨论】:

  • 谢谢,这就是我想要的,但我只是尝试了一些令牌=2,但它只创建了一个令牌字符串
  • 啊,你的意思是它产生了两个标记,但它们每个都有相同的“随机字符串”?你可以在那里插入一些随机函数,或者你可以定义什么“随机字符串”应该在self.tokens.create 行的上方。还是我误解了麻烦?
  • 我的意思是只有一个令牌对象,我希望至少有两个相同的令牌字符串
  • 这很奇怪。你在create! 上使用爆炸吗?如果由于某种原因无法创建某些东西,它应该会出错。我知道有时对象持久性在这些情况下会给我一个曲线球;我要尝试的第二件事是Token.create!(user_id: self.id, token_string: generated_token_string_goes_here)
  • 我遇到了一些问题,现在它说未定义的方法令牌
猜你喜欢
  • 2015-07-13
  • 1970-01-01
  • 2015-07-02
  • 2011-04-04
  • 2018-03-17
  • 1970-01-01
  • 2018-08-14
  • 2021-11-02
相关资源
最近更新 更多