Приведенные таблицы с integer
и uuid
основными ключами - лучший способ интегрировать полиморфное соединение (has_many
)? Например:
class Interest < ActiveRecord::Base
# id is an integer
has_many :likes, as: :likeable
end
class Post < ActiveRecord::Base
# id is a UUID
has_many :likes, as: :likeable
end
class User < ActiveRecord::Base
has_many :likes
has_many :posts, through: :likes, source: :likeable, source_type: "Post"
has_many :interests, through: :likes, source: :likeable, source_type: "Interest"
end
class Like < ActiveRecord::Base
# likeable_id and likeable_type are strings
belongs_to :likeable, polymorphic: true
belongs_to :user
end
Работает много запросов:
interest.likes
post.likes
user.likes
Однако:
user.interests
дает:
PG:: UndefinedFunction: ERROR: оператор не существует: целое число = символ меняется LINE 1:... интересы "INNER JOIN" нравится "ON" интересы "." Id "=" нравится ".... ^ СОВЕТ: оператор не соответствует указанному имени и типу аргументов. Возможно, вам придется добавлять явные типы.: SELECT" интересует ". * FROM" интересы "INNER JOIN" любит "ON" интересы "." Id "=" нравится "." Likeable_id "WHERE" нравится "." User_id "= $1 И" нравится "." Likeable_type" = $2
Какой лучший способ включить обеспечение правильного кастинга?