我正在使用 Ruby on Rails 3,我想覆盖(可能在模型文件中)as_json
或 to_json
方法以respond_to
不包含某些信息的 HTTP 请求。
在我的帐户模型中我有
def as_json(options = {})
super(
:except => [
:password
]
)
end
在我的 Controller 中我有
format.json {
render :json => @account, :status => 200
}
例如,当我向 /account/1.json
发出请求时,我还返回了出于安全原因我不想要的密码属性。
那么,如何防止包含指定信息?
我能做到,而且行得通
format.json {
render :json => @account.to_json(:except => [:password]), :status => 200
}
但我需要重构。
最佳答案
如果只有一个 Action 你可以试试:
format.json { render :json => @account, :except => :password }
如果您需要它执行多个操作,那么覆盖会更好:
# Exclude password info from json output.
def to_json(options={})
options[:except] ||= :password
super
end
as_json 也一样
# Exclude password info from json output.
def as_json(options={})
options[:except] ||= :password
super
end
关于ruby-on-rails - 如何覆盖 'as_json' 或 'to_json' 方法,以便 'respond_to' 不包含指定信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5193854/