class Accounting::Request::Check < ActiveRecord::Base has_one :accounting_request, as: :requestable end class Accounting::Request < ActiveRecord::Base belongs_to :requestable, polymorphic: true end cr = Accounting::Request::Check.create!() cr.create_accounting_request
结果:
NameError: uninitialized constant Accounting::Request::Check::AccountingRequest
我的问题是,在迁移到rails 5之前,我暂时如何解决这个问题?
One solution 我发现是要添加类名:“::ClassName”,但这对我不起作用。
是的,rails确实支持命名空间模型上的多态性。。。
以下是使其生效的修订代码:
class Accounting::Request < ActiveRecord::Base belongs_to :requestable, polymorphic: true end class Accounting::CheckRequest < ActiveRecord::Base has_one :accounting_request, as: :requestable, class_name: 'Accounting::Request' end
class_name 需要在“-able”模型上,并且需要完全指定包含的类 belongs_to .
class_name
belongs_to
也不是我用的 has_one has_many .
has_one
has_many