我正在使用Ruby on Rails 3,我想更改多态关联使用的默认类型 - 列名称。
例如,如果我有这个类:
class Comment < ActiveRecord::Base
...
end
我实现了多态关联,我想使用类型列名称comm_id
和comm_type
而不是commentable_id
和commentable_type
< / em>的。 有可能吗?如果是这样,我必须为评论类改变什么?
答案 0 :(得分:2)
Rails API中没有办法覆盖用于多态关联的默认列名。
请查看this answer以获取可能的解决方案。
答案 1 :(得分:0)
在您的情况下,为什么不将关联更改为:
# Comment
belongs_to :comm, :polymorphic => true
# Everything else
has_many :comments, :as => :comm
答案 2 :(得分:0)
我在旧数据库的rails 6中做到了这一点。这应该适用于> = 4.2.1(see here)
的导轨# 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