Kaixo!好久不见。Emmanuel Hayford 在此。本周,Rails 中发生了很多事情,很多以至于为了保持本期简短,我不得不删掉一些 同样很好 的 pull 请求。以下是今天带给你的内容
允许通过整个记录查询复合查询约束假设你定义了两个模型 BlogPost 和 Comment 之间的关联,使用 has_many 方法进行复合查询约束
class BlogPost has_many :comments, query_constraints: [:blog_id, :blog_post_id] end
现在,你可以通过将 comments 对象作为参数传递给 where 方法,来查询与特定评论集关联的博客文章
comments = Comment.first(2) BlogPost.where(comments: comments).to_a 但目前,暂不涵盖 belongs_to、has_one、has_many_through 和多态关联等关联类型。如果你愿意,可以尝试一下!
ActiveRecord::FinderMethods#find 支持复合主键值 ActiveRecord::FinderMethods#find 现在支持传递复合主键值集,如
Cpk::Book.find([[1, 1], [1, 2]])
并把这些值作为复合主键列的值,但这仅适用于主键为数组的模型。
使用 Thor 执行内置重启任务 这是将 bin/rails 从 Rake 迁移到 Thor 的一部分内容,但此更改的一项好处的副作用是你现在可以在应用程序目录之外调用 bin/rails restart,如下所示
my_app/bin/rails restart
添加 Arel::Nodes::Node 的文档 Arel 是一个私有 API,这意味着过去没有进行任何有意义的文档编写工作。但这并没有阻止 gem 作者和应用程序程序员使用它——我们最好记录一下它,而这正是此 pull 请求对 Arel 部分文档执行的操作,供任何人需要使用。
引入 TestFixtures#fixture_paths 在这里,我们弃用 TestFixtures#fixture_path,转而使用 TestFixtures#fixture_paths。
此更新使你可以在 Rails 应用程序中指定多个固定路径,方法是使用 fixture_paths 访问器。默认情况下,test/fixtures 目录将继续作为应用程序的主要固定路径。然而,如果你需要包含来自其他目录的固定路径,则可以使用 fixture_paths 方法指定其他固定路径。
允许类似以下内容
ActiveSupport::TestCase.fixture_paths << “component1/test/fixtures” ActiveSupport::TestCase.fixture_paths << “component2/test/fixtures”
委托类型支持可自定义的外键列 现在,{role}_class 方法在与 delegated_type 方法结合使用时会尊重 foreign_type 选项。这意味着您可以通过指定 foreign_type 选项,对非常规 {role}_type 列名使用 delegated_type。此选项会转发给 delegated_type 封装的基本 belongs_to 关联,以便您指定外键类型列的名称。
我想分享一些会议新闻: RailsConf Atlanta 即将于 2023 年 4 月 24 日至 4 月 26 日举行,如果您计划参加,现在仍可购买门票。 RubyKaigi 也将于 2023 年 5 月 11 日至 13 日举行。
上周我们看到了 32 位贡献者!下周再会。
您每周的内部独家消息,了解来自 Rails 的有趣提交、拉取请求等。
订阅 以收到通过邮件发送的这些更新。