mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
cbb19eb833
#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.
38 lines
759 B
Ruby
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
|