【问题标题】:Mongoid, setting custom accessor field in mongoid-history gemMongoid,在 mongoid-history gem 中设置自定义访问器字段
【发布时间】:2015-08-01 20:59:11
【问题描述】:

我正在将mongoid-history gem 添加到我的项目中。

根据in github 的指导,当我将Userstamp 添加到我的跟踪器时,它会创建created_by 字段,其访问器名为creator

他们写道,我可以通过 gem config 重命名它。

如何重命名此字段?

【问题讨论】:

    标签: ruby-on-rails ruby mongoid


    【解决方案1】:

    根据文档,Userstamp 是另一个名为 mongoid_userstamp 的 gem。文档提供了通过配置文件或在每个模型内部配置名称的示例代码:

    config/mongoid_userstamp.rb:

    # Default config (optional unless you want to customize the values)
    Mongoid::Userstamp.config do |c|
      c.user_reader = :current_user
      c.created_name = :created_by
      c.updated_name = :updated_by
    end
    

    app/models/your_model.rb

    # Example model class
    class Product
      include Mongoid::Document
      include Mongoid::Userstamp
    
      # optional class-level config override
      # mongoid_userstamp user_model: 'MyUser',
      #                   created_name: :creator,
      #                   updated_name: :updater,
    end
    
    # Example user class
    class MyUser
      include Mongoid::Document
      include Mongoid::Userstamp::User
    
      # optional class-level config override
      # mongoid_userstamp_user reader: :current_my_user
    end
    

    在 Mongoid History 中,您可以在 HistoryTracker 类中包含配置,例如:

    # app/models/history_tracker.rb
    class HistoryTracker
      include Mongoid::History::Tracker
      include Mongoid::Userstamp
      # optional class-level config override
      mongoid_userstamp created_name: :updater,
                        updated_name: :another_updater,
    end
    

    【讨论】:

    • 为什么在跟踪模型上放置Mongoid::Userstamp?我以为只有你的跟踪课程才需要它?如果我想将creator 更改为updater
    • 编辑了答案以适合 HistoryTracker 类中的代码。
    • 当我尝试将它与 mongoid-audit gem 一起使用时,它让我 undefined method updater'` 出错
    • 您是否取消了mongoid_userstamp 的注释?对不起,我忘了正确更新代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    相关资源
    最近更新 更多