Rails 3 + Devise:新的评论表单还包含用户模型字段?

时间:2011-06-25 22:12:28

标签: ruby-on-rails devise

我的想法是拥有你曾经看过百万次的内容,一个“发表新评论”表单,其中包含以下字段(对于未登录的访问者):姓名,电子邮件,网站和消息

请注意,“message”字段属于Comment模型,其他3属于User模型。由于User模型是Devise可验证的,我希望能够以这种混合形式使用这些验证(以及注释字段的验证)。

这可能吗?我可以将accepts_nested_attributes_for(:user)添加到评论模型中,即使评论是用户的孩子吗?

谢谢!

1 个答案:

答案 0 :(得分: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 

然后在app / views / users / registrations / 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 %>
   ...

我没有对此进行测试,但它改编自我正在使用的类似工作代码。

这实际上是添加了评论的用户表单。我只是让设计做它的事情,尽量不去打它。