1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00
rails--rails/activerecord/test/models/contract.rb
Ryuta Kamizono cbb19eb833 Fix complicated has_many through with nested where condition
#40779 will be caused if (1) having nested where condition for through
association, and (2) through scope has references values, and (3) the
model has no association which is the same name with table name.

In that case, the join root will be found by the table name but the join
root isn't related with association reflection.

This changes to return the table klass from join dependency tree, it
works regardless of whether the join root or join association children.

Fixes #40779.
2021-01-05 11:40:04 +09:00

38 lines
759 B
Ruby

# frozen_string_literal: true
class Contract < ActiveRecord::Base
belongs_to :company
belongs_to :developer, primary_key: :id
belongs_to :firm, foreign_key: "company_id"
attribute :metadata, :json
before_save :hi, :update_metadata
after_save :bye
attr_accessor :hi_count, :bye_count
def hi
@hi_count ||= 0
@hi_count += 1
end
def bye
@bye_count ||= 0
@bye_count += 1
end
def update_metadata
self.metadata = { company_id: company_id, developer_id: developer_id }
end
end
class NewContract < Contract
validates :company_id, presence: true
end
class SpecialContract < ActiveRecord::Base
self.table_name = "contracts"
belongs_to :company
belongs_to :special_developer, foreign_key: "developer_id"
end