rails belongs_to要选择哪个类

时间:2010-06-02 09:25:36

标签: ruby orm

这样的模型关系。

class A
belongs_to :ref_config,:class_name => 'User'
end

我的问题是:    A有一个名为flag的属性,现在我想创建一个这样的函数:

如果flag == 1,我希望A类像这样belongs_to :ref_config,:class_name => 'Department,如果flag == 2,我希望A类像这样belongs_to :ref_config,:class_name => 'User'

如何实现功能

谢谢!

2 个答案:

答案 0 :(得分:2)

查看polymorphic associations,它会让您使用相同的belongs_to关系来引用不同的模型。

您可以将模型配置为:

class A < ActiveRecord::Base
  belongs_to :ref_config, :polymorphic => true
end

class Department < ActiveRecord::Base
  has_many :as, :as => :ref_config
end

class User < ActiveRecord::Base
  has_many :as, :as => :ref_config
end

要在A表中设置所需的列,请使用以下迁移:

class CreateAs < ActiveRecord::Migration
  def self.up
    create_table :as do |t|
      t.string :name # or whatever other attributes A should have
      t.references :ref_config, :polymorphic => true
    end
  end

  def self.down
    drop_table :as
  end
end

答案 1 :(得分:0)

从小问题我得到了你的问题可能对你有帮助。

class A
  belongs_to :department_config, :class_name => 'Department', :conditions=> flag= 1
  belongs_to :user_config, :class_name => 'User', :conditions=> flag= 2
end