2012-06-12 67 views
0

現在我有兩個表,用戶和角色,當然角色有一個user_id,角色模型有belongs_to :user,用戶模型有has_one :role。我想知道的問題是,我如何讓用戶模型在角色模型中創建新記錄。我知道我可以在創建用戶時儘可能輕鬆地在模型外部完成此任務,但我認爲這可能會更加簡化,並將所有內容保存在一個位置,並在用戶模型中進行簡化。是否有任何建議,我可以很容易地做到這一點,而不必知道用戶的ID保存之前?使用has_one或has_many時自動將新記錄關聯到關聯

注:(?我只會讓這個當new_record是真實的,否則會被禁止)

+0

如果用戶只有一個角色,爲什麼要爲角色使用單獨的表,而不是通過遷移將角色列添加到用戶模型? – ply

+0

@ entropy_9我想你可能會混淆'has_one'創建的關聯?僅僅因爲用戶在角色表中有一行並不意味着他們只有一個絕對角色。是的,人們更願意使用我假設的has_many(我已經看過很多次),但是當表中的行上有一對一的角色和用戶關聯時,有什麼意義呢?這隻會造成IMO效率低下,除非我誤解了文檔。 –

+0

啊,好吧,我一定誤解了OP。在過去的類似問題中,我只是在用戶表中添加了一個「角色」字段,在遷移中指定了默認角色(例如用戶/來賓),所以我在原來的評論中依靠這一點。 – ply

回答

0

我在做與用戶&其設置類似的東西,也許這會爲你工作:

class User < ActiveRecord::Base 

#... 

has_one :role 
before_create :build_a_role 

private 
    def build_a_role 
    self.build_role(role_att: value) 
    end 
end 

然後,當用戶被保存時,角色也被保存。