2011-06-25 77 views
1

的想法是你所看到的前一百萬次,「發表新評論」的形式具有以下字段(遊客未登錄誰):名稱,電子郵件,網站和消息Rails 3 + Devise:新評論表還包含用戶模型字段?

注意「消息」字段屬於Comment模型,另3屬於用戶模型。由於用戶模型是設計可驗證的,我希望能夠使用這些驗證(以及那些註釋字段)在此混合形式。

這可能嗎?我可以添加accepts_nested_attributes_for(:user)到Comment模型,儘管評論是用戶的孩子呢?

謝謝!

+0

你打算與用戶模型領域做當用戶沒有登錄怎麼辦?如果用戶沒有登錄 – David

+0

用戶字段纔會顯示。如果他們登錄,評論作者(用戶)在評論控制器所指派「創建」。 –

+0

也許我誤解了你。如果用戶未登錄,您是否搜索具有相同電子郵件的用戶並將他們指定爲評論的作者?如果它們不存在會怎麼樣?或者你的意思是文章的作者被分配給評論(假設評論是在一篇文章中進行的)。 – David

回答

0

我不知道這是否是你問什麼的,但你可以做這樣的事情......讓您的用戶模型中的虛擬訪問的評論:

def with_comment 
    if params[:user][:comment] 
    @comment = self.comments.build params[:user][:comment] 
    else 
    @comment = self.comments.build 
    end 
end 

def with_comment=(comment) 
    self.comments.build comment 
end 

然後在應用程序/視圖/用戶/註冊/ new.html.erb:

<%= form_for(resource.with_comment(params), 
      :as => resource_name, 
      :url => registration_path(resource_name)) do |f| %> 

    <% f.fields_for :with_comment, resource.with_comment do |cf| %> 
     <% cf.text_area :message %> 
    ... 

我沒有測試過這一點,但它是改編自我使用類似的工作代碼。

這實際上是一個評論的用戶形式加入。我只是讓設計做到這一點,並儘量不去打擊它。