这样的模型关系。
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'
如何实现功能
谢谢!
答案 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