ruby-on-rails - rails : strong_params and getter/setter methods

标签 ruby-on-rails getter-setter strong-parameters

我在 Rails 4 中使用 strong_params。当我尝试使用这样的自定义 setter 方法时:

def foo=(foo)
  @foo = foo
end

然后 Rails 在数据库中将该属性记录为 null。如果我删除自定义二传手,那么一切正常。在 Rails 3 中,自定义 setter 是这样写的,但也许情况已经改变了?如果是这样,自定义 setter 现在如何工作?

最佳答案

我不认为这段代码适用于 Rails 3。你确定吗?因为如果你这样做,你覆盖了 ActiveRecord 创建的 setter 方法(它负责将数据存储到 DB)。您的自定义版本的方法看起来与显示的完全一样吗?这有什么意义?

尝试调用 super

def foo=(foo)
  @foo = foo
  super
end

P.S.:我检查过它在 Rails 3 中工作(与 super 一起工作)。

关于ruby-on-rails - rails : strong_params and getter/setter methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16700824/

相关文章:

ruby-on-rails - 如何在 Ruby on Rails 环境中使用 Mongoid 进行通配符搜索?

ruby-on-rails - 更改 ActiveAdmin 范围内的默认排序顺序

ruby-on-rails - 我创建了 Rails g Controller 管理/帖子,它正在寻找管理/帖子?

binding - Svelte:如何将格式化输入字段绑定(bind)到属性

javascript - JS ES5 面向对象 : private instance member via get/set in constructor

ruby-on-rails - 找不到Rails 4强参数param的载波错误

ruby-on-rails - 如何在异常/完成时在 Rails 控制台中发出警报

javascript - JavaScript 中的私有(private) (#) getter

ruby - 强参数 : Unpermitted parameters: tags in has_many_through relation

ruby-on-rails - 如何让 ActiveAdmin 使用强参数?