2012-07-08 104 views
1

我有一個用戶模型,我正在使用設計。每個用戶都屬於一個組。我試圖找到一個簡單的方法來設置用戶的組註冊 - 而無需創建自定義控制器來覆蓋設計?Rails設計保存相關模型

我的模式是這樣的:

class User < ActiveRecord::Base 
    belongs_to :group 
end 

class Group < ActiveRecord::Base 
    has_many :users 
end 

這裏的形式:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 
<%= devise_error_messages! %> 

<%= f.label :email %><br /> 
<%= f.email_field :email %> 

<%= f.label :password %><br /> 
<%= f.password_field :password %> 

<%= f.label :password_confirmation %><br /> 
<%= f.password_field :password_confirmation %> 

<%= label_tag :group_name %> 
<%= text_field_tag :group_name %> 

<%= f.submit "Sign up" %> 

由於我只是想挽救這一個額外的屬性(組名),我想避免創建一個全新的定製設計控制器。有沒有一種方法可以在模型級別保存用戶組 - 可能會有回調?或者有更好的方式來保存一個組註冊?

謝謝!

+0

你應該可以做某種收藏選擇,不是嗎? http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select – varatis 2012-07-08 04:58:41

+0

我還沒有真正關心窗體(文本字段與集合選擇)。我更關心如何在保存新用戶表單時保存group_name屬性。 – Scott 2012-07-08 05:03:31

+0

你想用組名命名?這將創建一個新的組?或者你想從現有的選擇?爲什麼你需要這種形式的領域? – 2012-07-08 08:03:42

回答

2

如果您已經使用了上面顯示的自定義窗體(即,您沒有使用Devise提供的窗體),那麼應該沒有理由需要重寫Devise控制器。該組將與其他可分配屬性一起被質量分配。 (就個人而言,就用戶體驗而言,將組選擇降爲某個選項可能會很好,但這只是一個優先選擇,自動填充也可能不錯。)

+0

問題是組是一個單獨的模型,所以當我保存用戶表單時,該屬性不會被保存。 – Scott 2012-07-08 05:19:06

+0

儘管'user'有一個'group_id'。或者,如果這些模型遵循上面指定的關係,則應將其更改爲具有'group_id'。 – varatis 2012-07-08 05:33:39

+0

另外,@Scott - 聽起來你對存儲'belongs_to'關係有點困惑。 User模型應該有一個'group_id'屬性,而不是'group_name'屬性。 (除非'group_name'是你的外鍵,我非常懷疑它應該是。)參見http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to – varatis 2012-07-08 05:37:33