You’re not receiving notifications from this thread.
How to force a has_many association using a different column as foreign key
Stuck in a - at first sight - simple problem in RoR. I have two ActiveRecord models: Foo has many Bars.. But I want to bind them by "custom_id" (not the default id):
class Foo < ApplicationRecord has_many :bars, :class_name => "Bar", :foreign_key => "custom_id" end class Foo < ApplicationRecord has_many :bars, :class_name => "Bar", :foreign_key => "custom_id" end
Given that, I'd guess this pass would PASS, but it doesnt:
foo = Foo.new(:id=> 1, :custom_id => 100) bar = Bar.new(:foo=>foo) assert bar.custom_id == foo.custom_id # bar.custom_id == 1 and foo.custom_id == 100
The code is here: https://github.com/montenegrodr/temporary_repository_ror
You have to define the foreign key to on the
belongs_to side. https://apidock.com/rails/ActiveRecord/Associations/ClassMethods/belongs_to
Class Foo has_many :bars end class Bar belongs_to :custom, class_name: 'Foo', foreign_key: "custom_id", primary_key: 'custom' end
In this case Foo has to have a
custom as primary key.