【问题标题】:Multiple saves in rails controller在 Rails 控制器中多次保存
【发布时间】:2012-07-23 08:13:43
【问题描述】:

从我的客户那里,我正在发送一个与其他对象相关的对象:

变量数据 = { “评论”:result.comment, “文档”:{ “id”:结果.doc.id } “地点”: { “网址”:result.site.url } }; $.ajax({ 网址:'/数据', 类型:'POST', 数据:数据 });

这将发布到我的/data 控制器。在create 方法中,我有这段代码:

定义创建 @data = Data.new(params[:data]) @data.user_id = current_user.id respond_to 做 |格式| 如果@data.save @doc = Doc.find_or_create_by_id(params[:doc]) @doc.save @site = Site.new(params[:site]) @site.doc_id = @doc.id @site.save format.html //东西 format.json //东西 format.js //东西 结尾 结尾

我很好奇我是否正确地解决了这个问题。对于像我这样的相关对象,控制器似乎很“重”。

对于这个问题还有其他解决方案吗?

编辑:

数据模型:

类数据 属于_to :site, :polymorphic => true 属于_to:用户 结尾

【问题讨论】:

    标签: ruby-on-rails ruby ajax


    【解决方案1】:

    您的数据模型是什么样的?你有所有嵌套属性的赋值方法吗?

    def create
      @data = Data.new(params[:data])
      @data.user = current_user
    
      respond_to do |format|
        if @data.save
          @doc = Doc.find_or_create_by_id(params[:doc][:id]) 
          @site = @doc.sites.create(params[:site])
    
          format.html //stuff
          format.json //stuff
          format.js //stuff
      end
    end
    

    您可以在Rails Guides 中查看有关 Active Record 关系的更多详细信息。

    【讨论】:

    • 只是为了说明,使用create方法时会自动保存记录。
    • @ismaelga 你这是什么意思? yuri & dty:谢谢你的帮助!
    • @rabid_zombie 看到这个问题的答案:stackoverflow.com/questions/4333163/…
    猜你喜欢
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多