2011-06-30 22 views
0

有没有什么办法可以在一个模型中设置belongs_to/has_many关系的两半?所以,我想这样做:在Rails中,我可以在另一个模型的模型上设置has_many关系吗?

class A < ActiveRecord::Base 
end 

class B < ActiveRecord::Base 
    belongs_to :a 
    A.has_many :b 
end 

显然,这不工作(或我会用它),但我希望这说明我的意思......

+2

你想通过这样做完成什么?这是一个相当奇怪的要求。 – Luke

+0

单独做这件事有什么问题? –

+0

它来自我正在写的一个系统,我希望它尽可能容易地通过添加一个功能很少的新模型来扩展功能。我把它的大部分内容推到了一个超类中,实现了很多(包括belongs_to部分),但所有这些添加的模型都只需要一个has_many。 –

回答

2

我不知道你为什么'd想要,但假设你有一个很好的理由...

has_many只是在ActiveRecord :: Base中定义的类方法,所以调用A.has_many :b应该工作。

但是,您可能在加载订单时遇到问题。如果你加载你给的例子并且叫做a = A.new,那么类B从未被加载,所以a不知道A有很多B。在开始加载整个班级列表的生产环境中,这不会成为问题。在开发中,您可以通过使用require声明来避开它,但是,然后,您将非常强烈地将这两个文件结合在一起。

我还没有尝试过,但在理论上,这是我能想到的唯一的事情是阻止您的设置工作。

+0

啊哈。这就说得通了。当我尝试使用Class.inherited时遇到了类似的问题。它完美地工作,但是,如果已经看到其他模型,谢谢 :) –

相关问题