2011-06-25 34 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 %> 
    ... 

我没有测试过这一点,但它是改编自我使用类似的工作代码。

这实际上是一个评论的用户形式加入。我只是让设计做到这一点,并尽量不去打击它。