【发布时间】:2012-10-13 11:31:36
【问题描述】:
我正在使用 Ruby on Rails v3.2.2。我与用于has_many :through 关联的alias_method 有以下关联,这样:
class Resource < ActiveRecord::Base
has_many :article_associations
alias_method :post_associations, :article_associations
has_many :users, :through => :post_associations
end
当我执行@article.users 时出现以下错误:
ActiveRecord::HasManyThroughAssociationNotFoundError
Could not find the association :post_associations in model Article
为什么会这样?有没有办法让它按预期工作?即如何通过“别名”:post_associations正确返回@article.users?
注意:我想在 has_many :users, :through => :post_associations 语句中“声明”/“使用”:post_associations,因为我正在尝试“动态构建”(即元编程)@ 987654330@协会。
Ruby on Rails Framework Trace 是:
activerecord (3.2.2) lib/active_record/reflection.rb:501:in `check_validity!'
activerecord (3.2.2) lib/active_record/associations/association.rb:26:in `initialize'
activerecord (3.2.2) lib/active_record/associations/collection_association.rb:24:in `initialize'
activerecord (3.2.2) lib/active_record/associations/has_many_through_association.rb:10:in `initialize'
activerecord (3.2.2) lib/active_record/associations.rb:157:in `new'
activerecord (3.2.2) lib/active_record/associations.rb:157:in `association'
activerecord (3.2.2) lib/active_record/associations/builder/association.rb:44:in `block in define_readers'
...
【问题讨论】:
-
您能否详细说明为什么需要为您的关联设置别名?我认为没有一种方法可以轻松实现关联别名,因此它有助于了解您需要什么来帮助您解决此限制。
-
@Vincent Robert _ 这是因为我试图将文章抽象为 Mixin 模块中的帖子。也就是说,我希望在 Mixin 模块中,这篇文章完全被视为一篇文章。从那以后,我想
alias_method :post_associations, :article_associations即使是为了协会。
标签: ruby-on-rails ruby ruby-on-rails-3 activerecord associations