问题标签 [activesupport-concern]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
13474 浏览

ruby-on-rails - Rails ActiveSupport:关注和私有方法

这是一个关于rails关注的好主意:http: //37signals.com/svn/posts/3372-put-chubby-models-on-a-diet-with-concerns

制作不属于公共 API 的非常小的方法也是一个好主意。在不使用关注点的情况下,它们将成为 ruby​​ 类中的私有方法。

在 Rails ActiveSupport::Concern 模块中创建私有方法有意义吗?如果是这样,private 是否适用于关注定义中的常规实例方法和类方法?

0 投票
1 回答
830 浏览

ruby-on-rails-4 - 如何在关注点中定义 state_machine?

我试图将一些重复的逻辑分解为关注点。部分重复逻辑是state_machine

简化后DatabaseSiteSftpUser和更多包含以下内容:

我正在尝试将其重构为一个问题:

但是,这不是在 a 中实现 a 的正确方法state_machnineconcern因为这会导致:NoMethodError: undefined method 'deploy_state' for <DeployableDouble:0xb9831f8>。这表明 Double 根本没有分配状态机。

实际上是included do实现这个的正确回调吗?这可能是一个问题state_machine,它需要 ActiveRecord::Base 的子类吗?我没有得到什么?我对关注的概念很陌生。

0 投票
1 回答
8364 浏览

ruby-on-rails - 从实例方法中访问 ActiveSupport::Concern 类方法

我正在阅读 Michael Hartl 的教程,但发现 User 类有点混乱。我想通过将大块功能拉入单独的 mixin 来稍微清理一下(使用 new-ish ActiveSupport::Concern,而不是旧self.included(klass)模式)。

我在“会话”部分遇到了一些麻烦。

从“模型/用户/session_management.rb”:

我包含在“models/user.rb”中:

这适用于身份验证模块(实际上只是验证和has_secure_password)。但是,create_remember_token实例方法正在尝试访问encryptnew_remember_token类方法。

我觉得我错过了一些明显的东西。任何见解将不胜感激。提前致谢!

0 投票
1 回答
774 浏览

ruby-on-rails-4 - 异常:Rails 中的“自动加载常量时检测到 load_missing_constant 循环依赖”

我正在使用 Rails 4.0.2。我在关注目录中添加了子目录(带有模型名称):

  • /app/models/concerns/company/cache_concern.rb
  • /app/models/concerns/user/cache_concern.rb
  • /app/models/concerns/document/cache_concern.rb

公司目录中的 cache_concern.rb 有以下内容:

在我的模型课上,我有:

一切都很好,直到我开始生产。然后我得到以下异常:

`load_missing_constant':自动加载常量 Company::CacheConcern (RuntimeError) 时检测到循环依赖

为了解决我的问题,我将关注文件中的命名空间从 Company::CacheConcern 更改为 Concerns::Company::CacheConcern。这允许我在生产环境中加载应用程序。

但是现在我在使用公司类的关注文件中的开发环境存在问题:

NoMethodError(Concerns::Company:Module 的未定义方法“current_company”):

所以看起来他正在关注目录中搜索。在生产中一切都很好。为了解决这个问题,我可以在关注文件的类名前添加两个冒号来使用模型目录中的类。

我知道生产模式的行为与开发模式不同,因为将整个应用程序缓存在内存中。我检查了所有类似的帖子。我是否需要在模型目录中的类名前面在关注文件中使用两个冒号?如果有人能向我解释这种奇怪的情况,我将不胜感激。

谢谢

0 投票
1 回答
80 浏览

ruby-on-rails - 这是“关注”模块的有效用例吗?

我正在开发一个 Rails 3.x 应用程序,并且有一些关于日志记录的代码,我想在 M、V 和 C 之间共享。

我正在考虑把它扔进去,lib但由于这些东西可以被所有人使用并且有一个特定的问题,日志记录,我认为它可能是一个成为问题的候选者。

这是否是创建关注模块的合适用例?

谢谢!

0 投票
1 回答
107 浏览

ruby-on-rails - 关注和现场 Rails

我想提出这样的问题:

而不是将它包含在我的模型中:

但是在我的 stores/new.html.erb 中,这一行给了我一个错误

#Store:0xae6bb58 的未定义方法“lat”

我该如何解决这个问题?

0 投票
1 回答
1130 浏览

ruby-on-rails-4 - Rails4:在调用回调时使用 Rails 关注点

使用 rails4,我正在尝试实现通知模型。在这里,我使用 ActiveSupport::Concern 将我的通知相关代码与模型分开。create_notification_module.rb

这里我需要知道这个回调是从哪个控制器/模型调用的,这样我就可以编写我的 switch case。例如,案例评论:获取用户评论案例的消息的所有者,例如:获取喜欢的 msg/cmt 的所有者等,任何帮助表示赞赏。

0 投票
4 回答
21601 浏览

ruby-on-rails - 如何在 Rails 4 中测试控制器关注点

在 Rails 4 控制器中使用时处理关注点测试的最佳方法是什么?说我有一件小事Citations

测试中的预期行为是任何包含此问题的控制器都将获得此citations端点。

简单的。

但是,孤立地测试这种担忧的正确方法是什么?

不幸的是,这失败了。

这是一个人为的例子。在我的应用程序中,我得到一个不同的错误。

0 投票
0 回答
1127 浏览

ruby-on-rails - ActiveSupport::Concern 与模型继承

我想在几个模型之间分享一些行为。至少有两种方法:

1)ActiveSupport::Concern

2)模型(类)继承:

我看到的第一个的唯一优点是您可以包含任意数量的模块这两种方法是否还有其他优点/缺点?

0 投票
1 回答
501 浏览

ruby-on-rails - 使用 ActiveSupport::Concern 重载类方法

我有一个类方法,我希望模块重载,这样模块方法可以调用 super 或其他方式来调用原始类的实现。这类似于 alias_method_chain,但问题是:是否可以通过 ActiveSupport::Concern 来实现它?

考虑以下:

因此,您可以在此处看到 CustomAction 类正在添加操作,并希望重载/覆盖默认的 #find 操作,以便它首先在自定义操作中查找,如果在那里找不到,则会回退到原始的 find 实现.

但是,这不起作用。将始终调用原始实现。即使您将包含放在原始#find 的定义之后也是如此。

我试图避免 alias_method_chain 因为 1) 它不是过时的吗?其中 ActiveSupport::Concern 是新的热点 2)它需要将包含放在实现下面,这有点奇怪

想法?