是否可以在Rails 3中实现一个关联
class ApiCredentials < ActiveRecord::Base
belongs_to Model
end
其中Model
可以是任何模型。
然后在api_credentials
表格中,我有model_id
和model
等字段来跟踪此关联。
我不认为方便的标准ActiveRecord查询仍然可以正常工作,但有没有人有效地实现这样的事情或使用其他方法?
最后,我想要做的只是检查特定模型是否有ApiCredentials
,但我事先无法知道模型是否会实现它。
提前致谢。
答案 0 :(得分:1)
听起来你在谈论polymorphic association:
对于多态关联,模型可以属于单个关联上的多个其他模型。例如,您可能拥有属于员工模型或产品模型的图片模型 [...]
您可以将多态belongs_to
声明视为设置任何其他模型可以使用的接口。
这甚至会使用您的model_id
/ model
列,但会将其称为X_id
和X_type
,其中 X
是关联名称:
class CreatePictures < ActiveRecord::Migration
def change
create_table :pictures do |t|
#...
t.integer :imageable_id
t.string :imageable_type
#...
end
end
end
在你的情况下,你会有这样的事情:
class ApiCredential < ActiveRecord::Base
belongs_to :creditable, :polymorphic => true
end
class Pancake < ActiveRecord::Base
has_many :api_credentials, :as => :creditable
end
class OneCentStamp < ActiveRecord::Base
has_many :api_credentials, :as => :creditable
end