diff --git a/Gemfile b/Gemfile index 5b1ef08e..dc465814 100644 --- a/Gemfile +++ b/Gemfile @@ -11,4 +11,5 @@ group :development do gem "rubocop", platform: :ruby gem "ruby-lsp", platform: :ruby gem "simplecov", platform: :ruby + gem "rails", platform: :ruby end diff --git a/config/quickdraw.rb b/config/quickdraw.rb index 70ca3d10..831eb1f5 100644 --- a/config/quickdraw.rb +++ b/config/quickdraw.rb @@ -1,5 +1,6 @@ # frozen_string_literal: true +require "active_record/railtie" require "literal" require "securerandom" require "set" diff --git a/lib/literal/rails/patches/active_record.rb b/lib/literal/rails/patches/active_record.rb index 885dc9f2..dd230e90 100644 --- a/lib/literal/rails/patches/active_record.rb +++ b/lib/literal/rails/patches/active_record.rb @@ -4,9 +4,10 @@ module ActiveRecord class RelationType def initialize(model_class) unless Class === model_class && model_class < ActiveRecord::Base - raise Literal::TypeError.expected( - model_class, - to_be_a: ActiveRecord::Base, + raise Literal::TypeError.new( + context: Literal::TypeError::Context.new( + expected: ActiveRecord::Base, actual: model_class + ) ) end diff --git a/test/rails.test.rb b/test/rails.test.rb new file mode 100644 index 00000000..4679e137 --- /dev/null +++ b/test/rails.test.rb @@ -0,0 +1,9 @@ +test "ActiveRecord::Relation with non-ActiveRecord::Base child" do + assert_raises(Literal::TypeError) do + Class.new do + extend Literal::Properties + + prop :example, ActiveRecord::Relation(String) + end + end +end