Rails Nested Form 问题求助!

feng041921 · 2012年11月30日 · 最后由 ericguo 回复于 2012年12月01日 · 2466 次阅读

在 Order 的 form 中,有 User (用的是 Devise),如下

<%= f.fields_for :user do |builder| %>
    <%= builder.label :name  %><br/>
    <%= builder.text_field :name %><br/>
    <%= builder.label :phone  %><br/>
    <%= builder.text_field :phone %><br/>
    <% unless user_signed_in? %>
        <legend>I want a account (Optional)</legend>
        <%= builder.label :email, "Email"  %><br/>
        <%= builder.text_field :email %><br/>
        <%= builder.label :password, "Password"  %><br/>
        <%= builder.password_field :password %><br/>
        <%= builder.label :password_confirmation, "Confirmation"  %><br/>
        <%= builder.password_field :password_confirmation %><br/>
    <% end %>
<% end %>

希望 User 的 email 和 password 是 optional 的,如果不填就不用验证,而创建没有 email 和 password 的特殊 user,应该怎么实现呢?

谢谢!

在 user 里写 validate?

devise 有点特殊,默认 email 和password是必填的,可以通过 Freedom patch(or monkey patch :😄: ) 直接搞成选填,不过这样还要重写 find_first_by_auth_conditions,这里有个例子,可以看看,目的是允许用户通过 badge 工号登录,email 是选填。

另外我看你似乎在做电商网站,那么我强烈建议你参考Shopqi的实现,有了 Shopqi 的参考开源实现,貌似现在从头开发电商网站没啥意义。。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号