2012-04-19 99 views
1

我想在Devise中嵌套一個類,它將用戶的技能和期望的技能保存到數組中,但我似乎無法讓我的表單對象保存到數組中。Rails,Mongoid和Devise嵌套模型

Class User 
include Mongoid::Document 
devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 

## Database authenticatable 
field :email,    :type => String, :null => false, :default => "" 
field :encrypted_password, :type => String, :null => false, :default => "" 



## Recoverable 
field :reset_password_token, :type => String 
field :reset_password_sent_at, :type => Time 

## Rememberable 
field :remember_created_at, :type => Time 

## Trackable 
field :sign_in_count,  :type => Integer, :default => 0 
field :current_sign_in_at, :type => Time 
field :last_sign_in_at, :type => Time 
field :current_sign_in_ip, :type => String 
field :last_sign_in_ip, :type => String 


field :first_name 
field :last_name 

field :location 


index([[:skills, :desired]], :background => true) 

validates_presence_of :first_name, :last_name, :location 
validates_uniqueness_of :first_name, :last_name, :email, :case_sensitive => false 
attr_accessible :first_name, :last_name, :email, :password, :password_confirmation,  :remember_me, :location 

embeds_one :skills 
end 
class Skills 
include Mongoid::Document 

field :skills, type => String 
field :desired, type => String 

embedded_in :user 
end 

如何修復我的模型和視圖,以便一個人可以添加多種技能和所需的技能作爲註冊? (我是導軌初學者)

+1

這只是我的意見,但我會建議留給用戶模型只處理認證,並有一個獨立的,聯'Profile'或'Person'模型,它可以處理持有的技能等,否則您的用戶模型將變得相當凌亂得很快。 – Russell 2012-04-19 15:33:33

+0

我還需要重寫設計模型才能完成該功能嗎? – user1344267 2012-04-19 15:42:38

+0

您需要做的只是在設計模型中添加'has_one:person',在您的人模型中添加'belongs_to:user' - 反之亦然,具體取決於您希望哪一個具有另一個的id。 – Russell 2012-04-19 15:44:58

回答

1

embeds_one應該是embeds_many如果你想要一個技能數組。