问题标签 [trailblazer]

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 投票
3 回答
684 浏览

ruby-on-rails - Cells-4.0.4 : 未初始化的常量 Cell::Concept (NameError)

环境:

我正在研究 Trailblazer 书中的示例,将它们映射到当前项目。当我从 ActionView 切换到 Cells 时,我的工作或多或少都符合预期。我将模板移入app/concepts/ar_invoice/views并创建了app/concepts/ar_invoice/cell.rb. 在我启动此更改后,rails server我收到此错误:

涉及的代码是这样的:

宝石文件:

应用程序.rb:

需要'开拓者/rails/railtie'

控制器(ar_invoices_controller.rb):

操作.rb:

单元格.rb:

和视图(new.haml):

我不使用任何 Trailblazer/Cells 初始化程序。有人可以指出导致上述异常的我的错误吗?

0 投票
1 回答
102 浏览

trailblazer - Paperdragon 的 Trailblazer Operation 如何按顺序处理图像?

在使用 Paperdragon 处理图像的 Trailblazer 操作中,典型的代码如下:

这将从上传的图像创建四个版本,该图像可根据upload操作的合同进行访问。

我想做一些事情来:original生成,:edited然后用作,和:edited的基线。我如何使用 Paperdragon 实现这一目标?:verson_a:version_b:version_c

0 投票
2 回答
777 浏览

ruby-on-rails - 如何测试/模拟与外部 gem 交互的 Trailblazer 操作?

我喜欢 Trailblazer 的所有面向对象的美!

我有一个与 gem(称为cpanel_deployer)交互的操作,以在网络上进行外部操作。(它将插件域添加到 cpanel。)

cpanel_deloyergem 已经过测试,所以我不需要在这里重新测试它的功能。但为了测试操作,我想确保CpanelDeployer::Panel#add_domain使用正确的参数调用。所以我想我应该嘲笑CpanelDeployer::Panel

我认为尝试使用any_instance_of. 根据thoughtbot 的说法,它通常被认为是代码异味......他们建议使用依赖注入。有没有一种在开拓者操作中使用依赖注入的好方法?这种情况还有另一种最佳做法吗?

0 投票
2 回答
139 浏览

trailblazer - 继承的 Trailblazer 操作的合约能否更改其超类定义的验证?

当通过继承定义Trailblazer操作时,它会继承其超类的协定:

继承的 Trailblazer 操作的合约可以更改其超类定义的验证吗?

之所以出现这个问题,是因为创建操作的合同定义了一个强制属性,该属性需要在更新操作中是可选的:

最初的想法是在继承的类中以某种方式颠倒这个定义,但似乎没有办法做到这一点(可以忽略子类中的属性(writeable:false-p61)但似乎没有办法更改其有效性标准)。

0 投票
2 回答
323 浏览

ruby-on-rails - 在服务器运行时更​​改 Rails 代码时,Trailblazer 操作中的类的超类不匹配错误

我将Trailblazergem 与 Rails 一起使用,并且我的一个操作中有一个Cell类,每当我在服务器运行时更​​改代码时就会Trailblazer开始抛出错误。superclass mismatch

如果我启动服务器并立即开始浏览网站,一切都运行良好。

但是,如果在启动服务器后随时更改某些代码,然后尝试在站点上加载页面,则会出现superclass mismatch错误。

0 投票
2 回答
452 浏览

trailblazer - Trailblazer 概念能否从另一个概念继承并能够扩展其操作(多重继承)?

考虑一个抽象概念Tag,其中有不同种类的标签,比如TopicLocation(以及其他),它们除了作为标签之外是不相关的。它们具有相同的基本Tag属性,但在其他方面有所不同。

一个Topic概念是基于一个类似的Tag概念。likeTopic::Update通常会继承 from Topic::Create,但这样的操作也需要继承 from Tag::Update。Ruby 不支持多重继承——Trailblazer 可以支持吗?

  • Trailblazer 操作通过一个builds块支持继承,该块允许它们根据提供的params哈希的内容实例化一个子类。这适用于基类 ( Tag) 面向公众并且通过基类调用操作的情况。但是,在此示例中,面向公众的类是Topic子类。

  • 操作需要通过子类 ( Topic) 调用,但其操作基于公共Tag基类(反向构建器?)。

这是可以通过单继承实现的一种方法(但它说明了这种方法的缺点)...

每种类型的标签都存储在自己的数据库表中,并具有如下 ActiveRecord 类:

Trailblazer 的概念将遵循类似的设计 -Tag操作将提供基本功能并由更具体的操作 ( Topic) 子类化。该Tag操作不会直接使用 -Topic例如,控制器将使用该Topic操作。

Topic操作继承自Tag但必须指定其自己的Topic模型,这似乎只能在每个操作中实现,要求每个操作都明确地进行子类化:

这样做的一个问题是,在基本操作上定义的合同认为它是 aTag而不是 a Topic,这会导致将其用作模型的问题。一个显示问题所在的示例是在单元格的视图中:该Topic概念有一个单元格,该单元格呈现视图以操纵其对象。它使用 渲染表单simple_form_for,如下所示:

这不能按预期工作,因为合同认为它是 aTag并且这打破了形式:

  • 它的参数被发送为params[:tag]而不是params[:topic]
  • 提交按钮的标签是Create Tag而不是Create Topic

单元格不能使用operation.model(否则会起作用),因为在提交的操作失败后渲染时它不会看到任何表单错误。

解决此问题的一种方法是明确说明simple_form_for

向 中添加属性时会出现另一个问题Topic,因为这需要扩展Tag合同。通常的方法是contract do..end在操作中添加一个块Topic::Create。出现问题是因为这样的块不会被看到,Topic::Update并且Topic::Delete因为它们继承自Tag对应的而不是继承自Topic::Create.

另一种方法是子类Topic::Update操作继承自Topic::Create. 这将消除指定模型的需要(因为Topic::Create这样做),但意味着Tag::Update操作添加的任何内容都将丢失:

action需要重新指定,因为不是Tag::Update继承的,但是因为Topic::Create是继承的,所以添加的属性Topic::CreateTopic::Update.

只要更改仅在一个基类中,这两种样式都可以工作。当两者都发生变化时它会中断,因为 Ruby 不支持多重继承。考虑Delete通常如下所示的操作:

如果是这样,Tag::Delete那么Topic::Delete可能是

或者

在前一种情况下Topic::Delete,将不知道由添加的属性,Topic::Create而在后一种情况下,Topic::Delete将缺少在 中定义的process方法Tag::Delete

开拓者概念如何继承另一个概念并能够扩展其业务?

0 投票
0 回答
172 浏览

ruby-on-rails - Rails 4:将父类belongs_to属性传递给子类

为了把我的问题放在上下文中,我有一个包含许多字段的表单。每个字段都可以是另一个字段的根或子字段(在我的数据库中使用闭包表的层次结构)。我在构建层次结构表时没有任何问题,但是我form_id在子字段上设置时遇到了问题。

这是我的架构:

还有我的模型(为了简单起见):

如果我使用嵌套表单保存我的子字段,我会收到此错误:ERROR: null value in column "form_id" violates not-null constraint. 如果我这样做,form_id则不会通过:Form.find(1).fields.first.fields.new例如。

有没有办法自动设置?是自动设置的parent_id

编辑

params堆栈示例。我将 Trailblazer 架构与改革一起使用。

0 投票
0 回答
117 浏览

ruby-on-rails - Trailblazer Rails React - 我如何从 .jsx 调用“concept”?

在 .JSX 中,我想调用

,为了在同一个 JSX 中显示视图表单。我该怎么做?我认为不可能在 JSX 中使用 Rail。谢谢!

提前致谢!

0 投票
0 回答
421 浏览

ruby-on-rails - 开拓者改革:validation_groups 崩溃

我正在设置 Trailblazer 的部署,但是我是一个新的 Rails 用户,我可以使用一些关于这个问题的指导。

我已经安装了所有必需的 Gem,但是Reformgem 没有正常运行并且抛出错误。

这是错误:

validation_groups: undefined local variable or method validation_group_class for RecentUpgrade::Contract::Create:Class (NameError)

有什么想法可以让这个应用程序运行吗?谢谢!

这是我们在应用程序中使用的验证代码的一部分contract.rb

0 投票
1 回答
448 浏览

ruby-on-rails - 改革:干式验证匹配器

我正在寻找一种方便的方法来测试基于改革的表单对象的验证。

是否有任何匹配器(例如用于测试 ActiveModel::Validations 的匹配器)来测试干验证?这甚至是要走的路吗?