2

我有一个非常简单的 rails 模型,我正在尝试在更新之前更改值:

before_update { self.notes = "from the model" }

但是这个更新不起作用,是什么问题?

谢谢

4

3 回答 3

0

另一种方法是使用 proc。我通常倾向于使用这种模式:

set_callback :update, :before do |model|
  model.notes = "from the model"
end

这样做可以让您明确指定要更改的模型的实例(即在本例中为“模型”)。回调将在运行时自动将模型实例传递给 Proc。

但是,只是一个简短的说明 - 如果您有一个名为“Model”的模型类,以及一个名为“my_model”的实例,请确保您尝试修改的内容(即“notes”)实际上是实例的一部分,而不是班上。如果它是类的一部分,它充其量会出错,立即告诉您有问题,或者最坏的情况是设置一个所有实例将共享的类变量,从而导致不确定的结果。

于 2015-02-03T01:42:19.897 回答
0

请试试这个。

before_save :change_notes

private
def change_notes
  self.notes = "from the model"
end
于 2013-09-04T07:30:53.887 回答
0

尝试

before_update 'self.notes = "from the model"'

或者

before_update { |record| record.notes = "from the model" }

或者

before_update :change_notes

private
def change_notes
  self.notes = "from the model"
end

确保您没有更新您的self.notesbefore_update回调,否则您将看不到更改。

于 2013-08-08T16:28:50.677 回答