Rox*_*dow 6 ruby database blogs field ruby-on-rails
我在我的数据库中有一个名为IP的字段,当我在我在Rails中构建的博客中发送消息时,我将用户IP(在#create方法中)放入其中.
但是当我想以另一种格式(JSON)查看文章时,该字段是可见的.如何隐藏字段IP?
您可以在控制器中的格式块中执行此操作,如下所示:
respond_to do |format|
format.json { render :json => @user, :except=> [:ip] } # or without format block: @user.to_json(:except => :ip)
end
Run Code Online (Sandbox Code Playgroud)
如果您想要通常排除特定字段,只需覆盖用户模型中的to_json方法:
class User < ActiveRecord::Base
def to_json(options={})
options[:except] ||= [:ip]
super(options)
end
end
Run Code Online (Sandbox Code Playgroud)
虽然这对于密码或特别要求的内容来说不是完全正确的解决方案,但当您在 Google 上搜索 ActiveRecord 中的隐藏列时会出现这种情况,因此我将把它放在这里。
Rails5 引入了新的 API,ignored_columns,可以使 activerecord 忽略列完全存在。这就是我真正想要的,许多其他通过 Google 到达这里的人也可能这样做。
我自己还没试过。
class User < ApplicationRecord
self.ignored_columns = %w(employee_email)
end
Run Code Online (Sandbox Code Playgroud)
https://blog.bigbinary.com/2016/05/24/rails-5-adds-active-record-ignored-columns.html
| 归档时间: |
|
| 查看次数: |
1893 次 |
| 最近记录: |