我的想法是拥有你曾经看过百万次的内容,一个“发表新评论”表单,其中包含以下字段(对于未登录的访问者):姓名,电子邮件,网站和消息
请注意,“message”字段属于Comment模型,其他3属于User模型。由于User模型是Devise可验证的,我希望能够以这种混合形式使用这些验证(以及注释字段的验证)。
这可能吗?我可以将accepts_nested_attributes_for(:user)
添加到评论模型中,即使评论是用户的孩子吗?
谢谢!
答案 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 %>
...
我没有对此进行测试,但它改编自我正在使用的类似工作代码。
这实际上是添加了评论的用户表单。我只是让设计做它的事情,尽量不去打它。