Is there a way to make Rails ActiveRecord attributes private?

前端 未结 7 851
渐次进展
渐次进展 2020-12-08 13:48

By default, ActiveRecord takes all fields from the corresponding database table and creates public attributes for all of them.

I think that it\'s reasonable not<

7条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-08 14:19

    Jordini was most of the way there

    Most of active_record happens in method_missing. If you define the method up front, it won't hit method_missing for that method, and use yours in stead (effectively overwriting, but not really)

    class YourModel < ActiveRecord::Base
    
      private
    
      def my_private_attribute
        self[:my_private_attribute]
      end
    
      def my_private_attribute=(val)
        write_attribute :my_private_attribute, val
      end
    
    end
    

提交回复
热议问题