【发布时间】:2015-04-23 15:59:36
【问题描述】:
在一个类中我需要根据对象 *own 属性动态设置 has_many 或 has_one 关联(这样外来对象就不需要改变了)。
类似:
class Child < ActiveRecord::Base
if orphan == true #<-- I can't find the good solution for this condition
has_one :parent
else
has_many :parents
end
end
关于我需要保留的“父”类:
class Parent < ActiveRecord::Base
belongs_to :children #this is true if the child is orphan or not
end
有办法吗?
以防万一:我使用的是 rails 3.2.14
【问题讨论】:
-
我不相信这是可能的描述。你确定这是最好的解决方案吗?为什么你“需要”这样做?为什么不只使用一个别名方法来返回单个父项或基于
child.parent.size的数组? -
嗨乔,问题是我想尽可能少地修改应用程序。问题是,在我指定的情况下,“孩子”是一个“请求”(对一个组提出),而“父母”是一个由各个组满足的“协议”——过去是在“has_one”关联中链接。你可以想象,它们都是相当复杂的模型(有几个视图和控制器与之关联),我想要一个 DRY 代码,尽可能少地改变。 --也就是说,是的,如果 child.orphan == true 而不是调用父级,则条件可能会转到控制器
标签: ruby-on-rails ruby-on-rails-3 activerecord