我有一个ActiveHash类,我想在多态关联中使用它:
class Person < ActiveRecord::Base
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to :placeable, polymorphic: true
end
class Country < ActiveHash::Base
include ActiveHash::Associations
has_many :people, as: :placeable
self.data = [
{ id: 1, name: 'US' },
{ id: 2, name: 'Canada' }
]
end
设置多态关联时,它会持久保存到将多态类型设置为的数据库ActiveHash::Base。稍后访问时,我收到undefined method 'arel_table'错误。
person = Person.create
person.placeable = Country.last
person.save
person
=> #
person.placeable
NoMethodError: undefined method `arel_table' for ActiveHash::Base:Class
from (irb):2
我也尝试将多态类型设置为Country,但我收到Country类的相同错误。
非多态belongs_to似乎工作得很好。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
ActiveHash不支持arel行为。
**
Arel是Ruby的SQL AST(类似抽象语法树)管理器。它允许我们以语义,可重用的方式编写复杂的SQL查询。Arel是“框架框架”; 它旨在优化对象和集合建模而不是数据库兼容性。Active Record建立在Arel之上。
见Doc:https://www.rubydoc.info/gems/honkster-active_hash/0.7.3
即使在这个官方文档中,它也没有解释如下:
has_many :people, as: :placeable
请解释一下
belongs_to :placeable, polymorphic: true