2010-11-09 23 views
0

我有一個相當基本的一組模型,其中'項目'有一個'所有者'。我希望允許用戶在創建新項目時輸入所有者的姓名。如果所有者不存在,則應該創建一個新的。是否存在這樣做的好方法?我一直在考慮使用attr_accessorbefore_validation,但它似乎會與這種關係發生衝突。有任何想法嗎?謝謝!允許活動記錄模型使用字符串分配關聯

回答

1

使用與您的關係名稱不同的東西... owner_name應該沒問題。然後編寫必要的方法before_validation

+2

嗨法比奧。感謝你的回答。我結束了一個小調整(發現這個:http://railscasts.com/episodes/57-create-model-through-text-field)。我唯一的問題仍然是在'attr_accessor'字段添加驗證,但我相信我會找出一些東西。 – 2010-11-10 15:45:22

+0

不錯,Railscast可以幫助很多有類似問題的人。 – 2010-11-10 16:10:49

1

我會使用在你的控制器沿此線的東西:

def update 
    Project.transaction do 
    @project.owner = Owner.find_or_create_by_name(params[:project].delete(:owner_name)) 
    @project.attributes = params[:project] 
    @project.save! 
    end 
end 
+0

嗨,傑里米。這與我目前的相當接近。試圖弄清楚是否存在一種「幹」代碼的好方法(具有用於更新和創建的相同代碼以及應用程序周圍的其他幾個位置,並且覺得它應該放入模型中)。 – 2010-11-10 15:43:12

+0

或者你可以在模型中定義這個'def owner_name =(owner_name); owner = Owner.find_or_create_by_name(owner_name);那麼你只需要使用一個帶有'project [owner_name]'的表單字段,並且在任何控制器動作中,'update_attributes(params [:project])'應該有魅力。 – Jeremy 2010-11-11 21:14:44

相關問題