问题标签 [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 - 两种模型的一种方法。如何将模型名称作为变量传递给控制器?
我在两个不同的控制器(帖子和板)中有两种方法。它们几乎相同。区别只是模型-实例-关联名称。为了干燥这个我想在模块中编写方法,但是如何在 Post 和 Board 之间共享它?
更新好的,如果我将方法转移到模型的关注点,我应该如何在这里处理关联?在这里@user.posts.pluck(:id)
和这里@user.boards.pluck(:id)
,我可以用什么来替换帖子和板,以便它可以与它们一起使用?
ruby-on-rails - Rails 控制器中 before_filters 的顺序和关注点
我有一个 Rails 问题,定义如下:
我before_filter
在控制器层也有一个:
如果我包含MyConcern
inside MyController
,调用 before 过滤器的顺序是否取决于代码的排列方式?例如,如果我们有
之前是否filter_inside_concern
被调用filter_inside_controller
(反之亦然)?
谢谢!
ruby-on-rails - ActiveSupport 关注中的未定义方法
我有一个模型可以扩展ActiveRecord::Base
并包含一个问题:
UserConcern
存放在concerns
目录中:
当我尝试通过调用如下create_user
所示的方法创建新用户时出现运行时错误:
我对此有两个问题:
为什么是
some_method
未定义的?在我看来,我正确地将它包含在语句中include UserConcern
。这与我的User
课程扩展有关ActiveRecord::Base
吗?或者可能与我some_methods()
从类方法(即self.create_user()
)调用的事实有关?为什么运行时错误是指
#<Class:0x000000...>
而不是 to#<User:0x000000...>
?
ruby-on-rails - model.create 是做什么的!在 Rails 控制器中使用时的意思是什么?
表达式是什么model.create!
意思:
我猜它在使用这个mixin的控制器中调用了同名模型?
ruby-on-rails - Rails关注方法覆盖另一个关注方法不像普通模块那样工作
假设我在 ruby 中有以下结构(没有导轨)
现在在使用 rails 问题时
那么我在这里错过了什么?我需要在普通模块中使用 super 。我进行了搜索,但找不到有关此主题的帮助
ruby-on-rails - 我可以在关注点中添加 has_many 和 belongs_to 关系的双方吗?
编辑:回想起来,这并不是一个好主意。您正在将属于的功能ZipWithCBSA
放入其他人的模型中。收到关注的模型按预期行事,并且ZipWithCBSA
响应的事实:store_locations
在某种程度上应该是显而易见的ZipWithCBSA
。它与其他模型/关注点无关。罗伯特·努贝尔用他的潜在解决方案使这一点显而易见。
是否可以在一个关注点中同时拥有 has_many 和 belongs_to 关系?
概述
我有一张表ZipWithCBSA
,其中基本上包含一堆邮政编码元信息。
我有两个具有邮政编码的型号:StoreLocation
和PriceSheetLocation
. 本质上:
有两个属性ZipWithCBSA
我总是希望与我的其他模型一起返回,包括在#index
页面上。为了防止每次查询时为每个项目加入该表,我想将其中两个字段缓存到模型本身中——即
所以,我添加了
我希望将这些转移到关注点,所以我已经完成了:
这一切都很好——但我仍然需要手动将 has_many 关系添加到 ZipWithCBSA 模型中:
最后!问题!
是否可以重新打开ZipWithCBSA
并添加关注点的has_many
关系?或者以任何其他更自动的方式允许我指定一次这些特定系列的模型是 bffs?
我试过了
并且
但都没有奏效。我猜这与在模型自己的初始化期间没有添加这些关系的事实有关......但是是否可以在单独的文件中定义模型的关系?
我对 Ruby 的元编程还不是很流利。
ruby-on-rails - 为 ActiveSupport::Concern 动态生成测试
我有一个这样定义的关注:
以及各种使用这种关注点的模型:
这按预期工作,并生成一组我可以在类的实例上调用的新方法:
当我试图测试这个问题时,我的问题就出现了。我想避免为每个使用关注点的模型手动创建测试,因为生成的函数都做同样的事情。相反,我认为我可以使用 rspec'sshared_example_for
并编写一次测试,然后使用 rspec's 在必要的模型中运行测试it_should_behave_like
。这很好用,但是我在访问已传递给injectable_attributes
函数的参数时遇到问题。
目前,我在共享规范中这样做:
这可行,但显然是一种可怕的方法。有没有一种简单的方法可以只访问传递给 injectable_attributes 函数的值,无论是通过类的实例还是通过类本身,而不是查看已经在类实例上定义的方法?
ruby-on-rails - 如何在关注点中添加多个包含的块?
一切如下图所示:
那么当该模块中定义了一个额外的包含块时,如何定义额外的包含块?
ruby-on-rails - Rails关注动态关系
我为 rails 编写了一个 gem,以拥有一个小型的 mongoid 购物车。
在它得到的模型中,包括include MongoidCart::ActsAsProduct
class_name
我很难将我Product
的班级带入CartItem
班级。它应该会自动向MongoidCart::CartItem
类添加关系。当我像我一样“硬编码”时:my_product
,没有错误。
我怎样才能使:the_class_to_point_to_as_symbol
动态?
ruby-on-rails - 使用 ActiveSupport 时 Ruby 中的条件验证
我对 Ruby 还很陌生,所以我希望我只是错过了一些明显的东西。我有一个应用程序,其表单使用类似这样的方式进行验证...
...等等,效果很好。
我现在有一种新型表单,它使用相同的模型和数据库结构,但设置了一些不同的东西。它还经历了完全不同的验证过程。我一直在尝试找到一种方法,以便使验证调用有条件,例如...
...但是“验证”放置在方法中时会引发错误。
我还玩弄了将两个单独的验证脚本文件包含到我的表单模型中的想法,但是由于该过程是使用简单的“.valid?”执行的。方法,我也不确定如何区分该级别的脚本。
有没有办法使用单个模型在两组(或更多组)验证之间切换?