在設計用戶對象創建相關的記錄我使用的設計,併爲創建的每個用戶帳戶,我想生成一個關係,其中:設計考慮上註冊
class User < ActiveRecord::Base
belongs_to :business
end
class Business < ActiveRecord::Base
has_many :users
has_one :apt_setting
has_many :hours, :as => :hourable
end
class ApptSetting < ActiveRecord::Base
belongs_to :business
end
所以在登記相關的業務對象創建,並且每個業務對象都會創建一個關聯的ApptSettings和BusinessHour對象。
我現在有這個實現是這樣的:
class Admin
before_create :create_associated_records
def create_associated_records
# create the associated business object
business = Business.create(:business_name => business_name, :subdomain => subdomain, :initial_plan => initial_plan)
# retrieve the id of the new business object
self.business_id = business.id
# create the associated records
BusinessHour.default_values(business_id)
ApptSetting.default_values(business_id)
end
end
class ApptSetting < ActiveRecord::Base
belongs_to :business
def self.default_values(business_id)
# ... create record with default values
end
end
class BusinessHour < Hour
belongs_to :hourable, :polymorphic => true
def self.default_values(business_id)
# ... create record with default values
end
end
這並不工作,但它似乎是最好的設計?
一種選擇,我考慮的是處理消除管理 - > create_associated_records,而是做用戶的工作::賬戶:: RegistrationsController,我重寫「create」方法。在那裏我可以建立所有關聯的記錄,在適當的地方設置:accepting_nested_attributes,然後在Business對象上調用'save',這會導致生成所有關聯的記錄。
思考的最佳設計,或任何其他的想法?
還,什麼是這方面的一個ApptSetting?是預約設置?像時間?一個企業真的只有一次的約會? – MissingHandle
1),所以如果我刪除default_values我可以只默認值初始化,而不必直接調用它,對嗎? 2)我計劃處理用戶在此之後註冊添加到現有企業帳戶的情況。但就目前而言,我正在考慮創建最初的企業帳戶,它必須至少有一個用戶。在這種情況下,他們應該同時創建,所以是的,一個企業必須存在於用戶之前。 3)ApptSettings不是時候,而是像定製的消息。 – 99miles
哦,我明白了,我會打電話給before_create before_save的設置默認值 – 99miles