【问题标题】:How can I update mulitple records at once in Ruby on Rails?如何在 Ruby on Rails 中一次更新多条记录?
【发布时间】:2012-12-12 16:31:07
【问题描述】:

我正在开发一个 Ruby on Rails 应用程序。在我的控制器中,我需要多次更新表属性。我已将此逻辑放入控制器中。

def index   
  if request.post?
    @user_new = Bookmark.new(params[:user_new])
    tags = @user_new.tags.split(",")
    i=0
    while i < tags.length
      @user_new.update_attributes(:title => @user_new.title, :url => @user_new.url, :tags => i)  
      i=i+1
    end

   @check = "hello"
  end   

 end

这将遍历 while 循环,直到达到标签数组大小。并且多次更新是在表中使用不同的值完成的。

这应该会更新所有记录。如果数组大小为 3,则应该插入 3 条记录。但它没有发生。谁能告诉我如何使用数组作为每行的区分因子插入多条记录?

【问题讨论】:

    标签: database ruby-on-rails-3 update-attributes


    【解决方案1】:

    这样的工作是否可行:

    @user_new = Bookmark.new(params[:user_new])
    if @user_new.save!
      @user_new.tags.split(",").each do |tag|
        tag.update_attributes(:title => @user_new.title, :url => @user_new.url)  
      end
    else
      < do something else >>
    end
    

    或者您可以使用 .create 代替。

    关注@Thilo 的另一篇文章以索引标签。

    另外,如果你用 !在 update_attributes 上!有没有发现任何错误。

    您可能会遇到一些验证错误。试试看并检查控制台/日志。

    【讨论】:

    • 对不起,它应该是 ":tags => tag[i]" 。这意味着数组中的每个元素都被迭代和插入。
    • 你可以试试用砰(!),看看你有没有什么,我们可以稍后再担心吗?你的模型中有 attr_accessible 吗?
    • 如果执行这个@user_new.tags.split(",").each 做|tags|,我会得到nomethoderror tags.update_attributes(:title => @user_new.title, :url => @user_new.url) 结束。我还需要更新数组值怎么办?
    • @Thilo 是正确的 - 我没有注意到您没有保存模型。尝试执行上述编辑。
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 2017-01-03
    • 2017-06-14
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    相关资源
    最近更新 更多