Rails 默认情况下对每个查询隐藏模型字段
Rails hide Model field by default to every query
我有用户 table,它有一个字段 password_digest,我正在使用 API,我想应用这个:
Users.all.select(*User.attribute_names.reject { |attr| attr == 'password_digest' })
但我必须在我执行的每个查询中都写这个,我如何将其设置为默认行为。
您可以使用默认范围:
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
我有用户 table,它有一个字段 password_digest,我正在使用 API,我想应用这个:
Users.all.select(*User.attribute_names.reject { |attr| attr == 'password_digest' })
但我必须在我执行的每个查询中都写这个,我如何将其设置为默认行为。
您可以使用默认范围:
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