与mixin一起使用时的协会混乱

时间:2013-10-15 09:38:19

标签: ruby-on-rails

我有一个“工厂模块”,与“冰淇淋模型”有“has_many”关系。我已经完成了工厂模块与另一个“所有者模型”的混合,这样我就可以拥有“所有者”与“冰淇淋表”的关系。问题是我无法使用“所有者”对象获取冰淇淋我认为关系定义有问题。 工厂模型的定义如下。

module Factory
  extend ActiveSupport::Concern

  included do    
    has_many :icecreams, :dependent => :nullify 
  end

Icecream的关系定义是这样的

Class Icecream < ActiveRecord::Base

belongs_to :factory, :class_name => "Owner", :foreign_key => "factory_id"

2 个答案:

答案 0 :(得分:0)

试试这个,我希望它能为你使用。

module Factory   extend ActiveSupport::Concern
  def self.included(base)> 
     base.instance_eval("has_many :icecreams, :dependent => :nullify )   
  end

答案 1 :(得分:0)

解决了它。 必须定义关联双方(has_many,belongs_to)。 我在belongs_to方面定义了foreign_key:“factory_id”。 现在从has_many方面我希望我的关联使用带有“factory_id”的look_up,因此我必须在has_many端创建foreign_key:“factory_id”。

module Factory
  extend ActiveSupport::Concern

  included do    
    has_many :icecreams, :dependent => :nullify, :foreign_key => "factory_id"
  end