0

这是 中的update动作notes_controller.rb

def update
    note = current_user.notes.find(params[:id])
    note.update_attributes! params[:note]
    render json: {note: note.display}
end

它工作正常。

我的note对象有一个datetime名为scheduled_time. 当JSON数据从update客户端的操作返回时,我需要知道注释更新的日期是否scheduled_timeupdate.

def update
    note = current_user.notes.find(params[:id])
    previous_date = note.scheduled_time.to_date
    note.update_attributes! params[:note]
    date_changed = previous_date != note.scheduled_time.to_date
    render json: {note: note.display, date_changed: date_changed}
end

但是添加此代码会导致JSONdata( note.display) 中返回的注释包含update_attributes!. update_attributes!仍然有效,但从操作返回的数据JSONupdate反映更新。为什么会发生这种情况?

我正在使用

Rails 3.2.0
ruby 1.9.3

我也通常在笔记模型中使用Memoistdisplay gem,但没有具体使用方法。

4

2 回答 2

1

问题似乎是 note 变量的分配,并且没有使用 #update_attributes! 的结果集进行更新。你有任何钩子或观察者吗?

尝试直接使用 Note 对象:

Note.where(user_id: current_user.id, id: params[:id])

或者如果一切都失败了,试试:

{display: note.reload.display ... }

它似乎与您正在使用的 Memoist gem 有关,但如果不深入研究和模拟这一点,我无法确定。

于 2012-10-18T11:03:50.817 回答
0

在您note.update_attributes! params[:note]尝试运行 anote.reload以将 activerelation 重新加载到数据库中当前的任何内容之后

于 2012-10-18T13:20:39.110 回答