我一直在模型中使用它来阻止对某些模型的更新:
def update
self.errors.add_to_base( "Cannot update a #{ self.to_s }" )
end
Run Code Online (Sandbox Code Playgroud)
我现在正在编写一个插件,为模型提供一些额外的功能,我需要更新模型中的一个字段.如果我没有使用插件,我会直接在模型中执行此操作...
def update
if self.changed == ['my_field']
super
else
self.errors.add_to_base( "Cannot update a #{ self.to_s }" )
end
end
Run Code Online (Sandbox Code Playgroud)
我不能从我的插件中做同样的事情,因为我不知道更新行为是ActiveRecord的默认值,还是已被覆盖以防止更新.还有另一种方法可以阻止记录更新,同时允许我覆盖特定字段(并且仅在我的插件应用于此模型的实例中).
我有一个heredoc,我用它#{}
来插入其他一些字符串,但有一个实例,我也想#{some_ruby_stuff}
在我的heredoc中写入实际的文本,而不是插值.有没有办法逃脱#{.
我试过"\",但没有运气.虽然它逃脱了#{}
,它还包括"\":
>> <<-END
#{RAILS_ENV} \#{RAILS_ENV}
END
=> " development \#{RAILS_ENV}\n"
Run Code Online (Sandbox Code Playgroud)