Изменить имя по умолчанию полиморфного типа столбца - PullRequest
3 голосов
/ 07 мая 2011

Я использую Ruby on Rails 3, и я хотел бы изменить имя столбца типа по умолчанию, используемое полиморфной ассоциацией.

Например, если у меня есть этот класс:

class Comment < ActiveRecord::Base
  ...
end

и я реализую для этого полиморфную ассоциацию, Я хотел бы использовать имена столбцов типа comm_idcomm_type вместо commentable_id и commentable_type. Возможно ли это?Если так, что я должен изменить для класса Comment?

Ответы [ 3 ]

2 голосов
/ 07 мая 2011

В Rails API нет способа переопределить имя столбца по умолчанию, используемое для полиморфных ассоциаций.

Посмотрите на этот ответ для возможного решения.

0 голосов
/ 24 мая 2019

Я сделал это в rails 6 в моей прежней базе данных. Это должно работать для рельсов> = 4.2.1 ( см. Здесь )

# booking model
class Booking < ApplicationRecord
  has_many :user_notes, as: :notable, foreign_type: :note_type, foreign_key: :type_id
end
# booking model
# here polymorphic columns are `note_type` and `type_id`
class UserNote < ApplicationRecord
  belongs_to :notable, polymorphic: true, foreign_type: :note_type, foreign_key: :type_id
end
0 голосов
/ 22 августа 2011

В вашем случае, почему бы просто не изменить ассоциацию на:

# Comment
belongs_to :comm, :polymorphic => true

# Everything else
has_many :comments, :as => :comm
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...