如何在Rails中建立父母的孩子只有一次

问题描述:

如何确保父母只在Rails中建立其子女n次?如何在Rails中建立父母的孩子只有一次

有没有办法找到非持久实例?

我目前有一个问题,我在第一次加载页面时创建了子项。当用户刷新页面时,子项不会被加载,因为它们已被创建,但尚未被保存。

关于如何解决这个问题的任何想法?

在视图:

if (session[:members_built] == false) 
    @membership.build_members 
    session[:members_built] = true 
end 

... 

    <% f.fields_for :members do |ff| %> 
<%= render :partial => "member", :locals => { :ff => ff } %> 

在模型:

def build_members 
    (membership_type.adults - 1).times {members.build} 
    end 
+2

显示一些代码。 – 2010-12-06 12:42:35

+0

添加代码,如果我错过了其他任何相关内容,请让我知道 – amaseuk 2010-12-06 12:56:20

if (session[:members_built] == false) 
    @membership.build_members 
    session[:members_built] = true 
end 

我建议没有这样的代码是你的意见。这违背了MVC的原则。所以把它移到控制器中。还可以结帐Rails Guides for associations

所以你可以做这样的事情

@membership.build_members 
在控制器

。您不必使用会话变量来记住您是否调用了#build_members因为使用#build不保存该对象。所以当用户刷新页面时,控制器会再次调用#build_members,并且你的视图应该是你想要的。