I want to use custom primary key for a table, and referencing that table in other table.
But i got rails PG::UndefinedColumn: ERROR: column "id" custom column
error with my code
schema.rb
create_table 'memberships', id: false, primary_key: :rank, force: :cascade do |t|
t.string 'rank'
t.integer 'discount_rate'
t.datetime 'created_at', precision: 6, null: false
t.datetime 'updated_at', precision: 6, null: false
end
create_table 'members', force: :cascade do |t|
t.references :membership, index: true, foreign_key: { on_delete: :cascade }
t.string 'name'
t.datetime 'created_at', precision: 6, null: false
t.datetime 'updated_at', precision: 6, null: false
end
membership.rb
class Membership < ApplicationRecord
has_many :members, foreign_key: :membership_rank
validates :rank, uniqueness: true
end
member.rb
class Member < ApplicationRecord
belongs_to :membership
validates :name, length: { maximum: 30 }, uniqueness: true, presence: true
end
I checked on rails c
and found that my member
s are created with membership_id = 0
.
How can i fix my code for my member
table to reference membership
table's rank
column?
====
Rails + Postgres Relation Issue With Custom Foreign Key
Specifying column name in a "references" migration
I searched on google, but these kind of answer not worked on my code.
Thanks for all advice.