Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f384303

Browse files
authored
fix: add implicit_order_column for Rails 8.1+ compatibility (#464)
* ci: add Rails 8.1.0.rc1 to test matrix * fix: add implicit_order_column for Rails 8.1+ compatibility Rails 8.1+ requires an implicit_order_column for models without a primary key to support ordering. Hierarchy tables don't have a primary key, so we set ancestor_id as the implicit order column.
1 parent 5f9006c commit f384303

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

‎.github/workflows/ci.yml‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ on:
1111
jobs:
1212
test:
1313
runs-on: ubuntu-latest
14-
14+
1515
services:
1616
postgres:
1717
image: postgres:17-alpine
@@ -26,7 +26,7 @@ jobs:
2626
--health-interval 10s
2727
--health-timeout 5s
2828
--health-retries 5
29-
29+
3030
mysql:
3131
image: mysql:8
3232
ports:
@@ -47,6 +47,7 @@ jobs:
4747
- '3.4'
4848
rails:
4949
- '8.0'
50+
- '8.1.0.rc1'
5051

5152
steps:
5253
- name: Checkout

‎Gemfile‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ source 'https://rubygems.org'
55
gemspec
66

77
gem 'dotenv'
8-
gem 'railties'
98
gem 'with_advisory_lock', '>= 7'
109

11-
gem 'activerecord', "~> #{ENV['RAILS_VERSION'] || '8.0'}"
10+
rails_version = ENV['RAILS_VERSION'] || '8.0'
11+
gem 'activerecord', "~> #{rails_version}"
12+
gem 'railties', "~> #{rails_version}"
1213

1314
platforms :mri, :truffleruby do
1415
# Database adapters

‎lib/closure_tree/support.rb‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ def hierarchy_class_for_model
3333
hierarchy_class = parent_class.const_set(short_hierarchy_class_name, Class.new(model_class.superclass))
3434
model_class_name = model_class.to_s
3535
hierarchy_class.class_eval do
36+
# Rails 8.1+ requires an implicit_order_column for models without a primary key
37+
self.implicit_order_column = 'ancestor_id'
38+
3639
belongs_to :ancestor, class_name: model_class_name
3740
belongs_to :descendant, class_name: model_class_name
3841
def ==(other)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /