可以說我有兩個表。 ActiveRecord - 自動合併模型數據作爲一個聚合
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.string :type, :default => 'User'
t.string :user_name, :null => false
t.boolean :is_registered, :default => true
# ... many more fields
end
end
end
class CreateContactInfo < ActiveRecord::Migration
def self.up
create_table :contact_info do |t|
t.integer :resource_id
t.string :resource_type
t.string :first_name
t.string :last_name
t.string :middle_initial
t.string :title
end
end
end
class ContactInfo < ActiveRecord::Base
belongs_to :contactable, :polymorphic => true
end
class User < ActiveRecord::Base
has_one :contact_info, :as => :contactable
# composed_of :contact_info # ... It would be nice if magics happened here
end
我想有用戶的contact_info自動合併到我的用戶對象爲用戶對象的屬性,而不必說@ user.contact_info.first_name;相反,我更願意寫@ user.first_name。
我將屬性分解到contact_info表的原因是它們是多個模型的通用屬性。這就是爲什麼我要將contact_info設置爲多態關聯。
有誰知道一個很好的方法來將contact_info的屬性直接聚合/合併到我的用戶模型中嗎?
感謝編輯,使其更容易閱讀的代碼:-) – 2010-01-08 21:03:25