如何创建一个带有参数的Rails 4关注点

耶萨尔

我有一个称为User的ActiveRecord类。我正在尝试创建一个顾虑Restrictable该顾虑包含一些类似这样的参数:

class User < ActiveRecord::Base
  include Restrictable # Would be nice to not need this line
  restrictable except: [:id, :name, :email]
end

然后,我想提供一个称为的实例方法restricted_data,该方法可以对这些参数执行一些操作并返回一些数据。例:

user = User.find(1)
user.restricted_data # Returns all columns except :id, :name, :email

我将如何去做?

加布里埃尔·德·奥利维拉(Gabriel de Oliveira)

如果我正确理解了您的问题,那么这与如何编写此类关注点有关,而与的实际返回值无关restricted_data我将这样实现关注框架:

require "active_support/concern"

module Restrictable
  extend ActiveSupport::Concern

  module ClassMethods
    attr_reader :restricted

    private

    def restrictable(except: []) # Alternatively `options = {}`
      @restricted = except       # Alternatively `options[:except] || []`
    end
  end

  def restricted_data
    "This is forbidden: #{self.class.restricted}"
  end
end

然后你可以:

class C
  include Restrictable
  restrictable except: [:this, :that, :the_other]
end

c = C.new
c.restricted_data  #=> "This is forbidden: [:this, :that, :the_other]"

那会符合您设计的接口,但是except键有点奇怪,因为它实际上是在限制这些值而不是允许它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何处理OO应用程序中的跨领域关注点?使用Singleton?依赖注入?什么?

如何在Rails 4中使用关注点

Rails 4关注点:给类实例变量建模

mongodb编写关注点:所有副本成员都是动态的吗?

Rails 4多态关联和关注点

如何使用两个具有相同名称的关注点?

Rails ActiveSupport ::关注点和方法评估

在单独的API中抽象出常见的客户关注点是否有意义

如何在Rails中正确设置,关注或包含关注点

装饰Rails引擎的帮助程序以包含来自主应用程序的关注点

使用ServiceStack自动查询时如何管理关注点分离

Rails:在控制器中包括关注点导致找不到动作“索引”

是否可以在Rails之外使用关注点

如果模型类包含参数为View对象实例的静态方法,则是否违反MVC模式的关注点分离?

映射到Rails路由关注点的控制器名称空间中的不一致

在设计Rails数据库架构时如何避免使用关注点?

如何在Rails中使用模型关注点

如何区分控制器中角色创建的关注点

Mongo DB如何分离关注点

如何在不中断关注点的情况下触发JQuery操作

PushSharp关注点分离

Rails 4-使用关注点进行布线

Rails 5,关注点-他们可以引用数据库表吗?

如何在红宝石路线上使用关注点

关注点分离

如何防止从关注点外部访问/覆盖方法?

Rails:如何从包含的关注点覆盖或私有化给定范围?

在 Blazor 应用程序中,关注点分离和单一责任原则的最佳实践是什么?

Ruby/关注点/继承