默认情况下,Rails隐藏“模型”字段给每个查询

时间:2018-08-20 23:06:53

标签: ruby-on-rails activerecord rails-models

我有一个users表,它有一个password_digest字段,我正在使用API​​,我想应用此方法:

Users.all.select(*User.attribute_names.reject { |attr| attr == 'password_digest' })

但是我必须在每次执行的查询中都写这个,如何将其设置为默认行为。

1 个答案:

答案 0 :(得分:2)

您可以使用默认范围

class User < ActiveRecord::Base
  default_scope select(*User.attribute_names.reject { |attr| attr == 'password_digest' })
end

另一种方式:

class User < ActiveRecord::Base
  default_scope select(User.column_names - ["password_digest"])
end

参考:
https://apidock.com/rails/ActiveRecord/Base/default_scope/class