问题标签 [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.
ruby-on-rails - 如何创建带有参数的 Rails 4 关注点
我有一个名为 User 的 ActiveRecord 类。我正在尝试创建一个名为的关注点Restrictable
,它接受一些这样的参数:
然后我想提供一个实例方法restricted_data
,该方法可以对这些参数执行一些操作并返回一些数据。例子:
我该怎么做呢?
ruby-on-rails - 从 Rails 4 引擎扩展 ActionController::Base
我正在尝试ActionController::Base
从 rails 4 引擎扩展,以便安装它的任何应用程序在每个操作之前运行特定方法。现在我知道可能有几种不同的方法可以做到这一点,比如关注点,class_eval
或者开放分类,但我对这一切都很陌生,我能找到的链接主要是关于如何从主应用程序扩展引擎控制器,而不是就像我正在尝试的那样。
这是我尝试过的,我在引擎的控制器文件夹中创建了一个新文件夹,如下所示:
并在base_controller.rb
我添加了以下内容:
这不起作用。我认为这是因为它没有被加载(我仍在尝试了解如何以及在哪里将这样的自定义代码放置在 rails 引擎中),所以我尝试将该代码复制到my_engine/lib/my_engine/engine.rb
文件中,但随后出现以下错误启动服务器时:
如何做到这一点,我应该在哪里正确放置文件?
ruby-on-rails - 将 Rails ActiveSupport::Concern 包装到其他关注点中
我创建了一个 ActiveSupport::Concern,并在 ClassMethods 方法中从 Carrierwave 调用 mount_uploader 方法
/lib/my_concern.rb
/app/models/my_model.rb
一切正常,直到我在调用该方法的类中更改某些内容(我的意思是任何内容),然后我给了我:
我相信与它如何加载这些方法有关。
Ps:我在我的开发环境中使用 Thin,每次都给我错误,然后我重新启动服务器,它就会恢复工作。
ruby-on-rails - 如何使用 ActiveSupport::Concern 继承类方法
我的 Ruby on Rails 应用程序中有一个小的类层次结构。我试图添加一个关注点,即支持描述具有一些我希望由子类继承的信息的类。这个问题可以用这个小样本来说明:
我希望这个示例代码返回
但不幸的是 ChildItem 和 AnotherItem 没有添加在父类上设置的类“属性”,而是返回
如何使类继承按我想要的方式工作?
ruby-on-rails-4 - 控制器的关注模块与模型的关注模块共享?
如果我在控制器/关注文件夹中创建 FooConcern 模块,在模型/关注中创建 FooConcern 模块,则存在覆盖问题,或者我们可以像 disinct 模块一样使用它们?
ruby-on-rails - 覆盖 ActiveSupport::Concern 模块中由同一模块中的类方法定义的方法
我有一个 ActiveSupport::Concern 模块,大致如下所示:
这只会被包含在 ActiveRecord 类中,因此使用enum
. 基本上,我用我自己的一些额外的自定义逻辑覆盖了declined!
和accepted!
方法。ActiveRecord::Enum.enum
问题是,这不起作用,因为当我调用@model.declined!
它时,它只是调用原始实现declined!
并忽略我的自定义方法。
看起来我的自定义方法在运行包含的块之前被包含在调用类中 - 这意味着我的自定义方法被由定义的方法覆盖enum
,而不是相反。
在这种特殊情况下有一些简单的解决方法(例如,我可以将调用enum
移回包含类并确保它在行之上include MyModel::Acceptance
,但我想知道是否有一种方法可以解决这个问题,同时将它全部保存在同一个模块中.
有什么方法可以调用included
定义实例方法的类方法,然后从同一个Concern
模块中覆盖该实例方法?
ruby-on-rails - rails - 与验证有关的问题
我有关于验证的问题有类
/app/models/group.rb
/app/models/concerns/localized/title.rb
当我尝试在模型中使用验证时,它可以工作,但不用担心。请帮助我,我做错了什么?
PS AbstractModel < ActiveRecord::Base, rails 4.2, ruby 2.2.0p0
ruby-on-rails - Rails 4.2 关注测试环境中忽略的内容
我陷入了一个非常奇怪的问题。我最近从 rails 4.1 更新到 4.2。在 4.1 中一切正常。但是现在,在 4.2 中,模型关注内容似乎被忽略了,即使找到了关注点。
说得简单。我有一个Client
模型,它属于在关注点Address
中定义的Addressable
关系:
应用程序/模型/client.rb
应用程序/模型/地址.rb
应用程序/模型/关注/addressable.rb
环境没有问题development
。我可以Client.new.address
毫无问题地做。但是在test
环境中,同一行给了我一个unknow method address
错误。如果我搬到belongs_to :address
那里Client
,它会再次起作用。该模块被包含在内,因为这没有错误,如果我将名称更改为Adressabledewdewded
then,当然会出现错误。
验证方法等也会发生同样的情况。
我一直在调试这个,但我没有找到根。我已经复制了我development.rb
的 astest.rb
并重新启动了服务器,但仍然如此。我无法在全新的 Rails 4.2 应用程序中重现这一点,因此它与我的应用程序或更新过程有关,但不知道在哪里。
有人有线索吗?
谢谢
更新
Client.new.address
这是在测试环境中的控制台中执行的堆栈跟踪(在开发中它有效):
更新
两种环境中的结果Client.ancestors
是(当然,没有实例身份的唯一区别):
并且做Client.reflections.keys
使出address
现在开发中而不是在测试中。
ruby-on-rails - Rails 4 关注点:将类实例变量赋予模型
对于 Rails 问题,我可以通过包含模块来提供模型类方法和实例方法。我发现没有博客条目或线程提到我如何在我的模型中包含变量。
具体来说,我想给我的包含模型一个类实例变量@question
,但我不知道将声明放在模块中的哪个位置以便应用它。如果模型本身声明了该变量,我还希望覆盖类实例变量。
ActiveSupport::Concern
模块真的关心变量吗?
ruby-on-rails - 使用关注点覆盖 Rails 引擎模型,获取未初始化的常量关注点::模型
我正在遵循 Rails 指南来覆盖引擎模型,我正在使用一个ActiveSupport::Concern
来覆盖它。
我在引擎中创建了一个模块seven_gallery/lib/concerns/models/gallery.rb
,其中包含以下代码:
并将seven_gallery/app/models/seven_gallery/gallery.rb
代码更改为:
现在在我的主机应用程序中,我将引擎包含在Gemfile
其中
我有一个User
模型,其中包含:
但是每当我运行应用程序时,我都会在User
模型内的唯一一行上得到这个错误: