簡體   English   中英

Rails從另一個控制器更新模型

[英]Rails update model from another controller

所以我有這2個模型,文件夾和事件。 文件夾have_one事件和事件屬於文件夾。

我希望能夠在文件夾的同時使用新屬性更新文件夾的事件。 像這樣的東西。

def update
    respond_to do |format|
      if @folder.update(folder_params)
        @folder.event.update_attributes(status: @folder.status)
        format.html { redirect_to @folder, notice: 'Folder was successfully updated.' }
        format.json { render :show, status: :ok, location: @folder }
      else
        format.html { :edit }
        format.json { render json: @folder.errors, status: :unprocessable_entity }
      end
    end
  end

但我知道這不是很符合MVC,也不行。 關於如何使這項工作的任何想法?

提前致謝

你可以這樣做:

class Folder < ActiveRecord::Base

    after_save :update_event_status, on: update  #Or after_update :update_event_status

    def update_event_status
        event.update_attributes(status: status)
    end

end

在Model中編寫方法並在控制器方法中調用它。 像下面的代碼。

class Folder < ActiveRecord::Base

    def update_event_status(event,status)
        event.update_attributes(status: status)
    end

end


def update
    respond_to do |format|
      if @folder.update(folder_params)
        update_event_status(@folder.event,@folder.status) #call methode here
        format.html { redirect_to @folder, notice: 'Folder was successfully updated.' }
        format.json { render :show, status: :ok, location: @folder }
      else
        format.html { :edit }
        format.json { render json: @folder.errors, status: :unprocessable_entity }
      end
    end
  end

嘗試這個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM