有没有什么办法可以在一个模型中设置belongs_to/has_many关系的两半?所以,我想这样做:在Rails中,我可以在另一个模型的模型上设置has_many关系吗?
class A < ActiveRecord::Base
end
class B < ActiveRecord::Base
belongs_to :a
A.has_many :b
end
显然,这不工作(或我会用它),但我希望这说明我的意思......
有没有什么办法可以在一个模型中设置belongs_to/has_many关系的两半?所以,我想这样做:在Rails中,我可以在另一个模型的模型上设置has_many关系吗?
class A < ActiveRecord::Base
end
class B < ActiveRecord::Base
belongs_to :a
A.has_many :b
end
显然,这不工作(或我会用它),但我希望这说明我的意思......
我不知道你为什么'd想要,但假设你有一个很好的理由...
has_many
只是在ActiveRecord :: Base中定义的类方法,所以调用A.has_many :b
应该工作。
但是,您可能在加载订单时遇到问题。如果你加载你给的例子并且叫做a = A.new
,那么类B从未被加载,所以a
不知道A
有很多B
。在开始加载整个班级列表的生产环境中,这不会成为问题。在开发中,您可以通过使用require
声明来避开它,但是,然后,您将非常强烈地将这两个文件结合在一起。
我还没有尝试过,但在理论上,这是我能想到的唯一的事情是阻止您的设置工作。
啊哈。这就说得通了。当我尝试使用Class.inherited时遇到了类似的问题。它完美地工作,但是,如果已经看到其他模型,谢谢 :) –
你想通过这样做完成什么?这是一个相当奇怪的要求。 – Luke
单独做这件事有什么问题? –
它来自我正在写的一个系统,我希望它尽可能容易地通过添加一个功能很少的新模型来扩展功能。我把它的大部分内容推到了一个超类中,实现了很多(包括belongs_to部分),但所有这些添加的模型都只需要一个has_many。 –