2011-03-13 113 views
1

我拔掉了我的所有頭髮。沒有更多的左... :(無法批量分配受保護的屬性:

我使用Spree 0.3.4,在一個擴展中我需要註冊一些零售商,所以我指示他們到一個零售商的形式,它有許多屬於零售商模式的自定義字段...

所以我試圖驗證/從一種形式提交所有領域,像這樣

myextension /應用/視圖/ user_registrations/new.html.erb

<%= form_for (:user, :url => registration_path(@user, :type => "retailer) do |f| %> 
    <%= f.fields_for :retailer do |r| %> 
    <%= r.text_field :name %> 
    <% end %> 
    <%= f.text_field :email %> 
<% end %> 

等等等等

class Retailer < ActiveRecord::Base 

belongs_to :user 

validates :name, 
      :presence => true 

end 

class User < ActiveRecord::Base 

has_one :retailer 
accepts_nested_attributes_for :retailer 

attr_accessible :retailer_attributes 


# theres a whole lot more spree and devise stuff here. not sure worth mentioning 

end 

我還增加了在康康舞能力ability.rb

的問題是零售商精密組件永遠不會得到驗證和數據永遠不會插入到數據庫...

我創建了一個空白應用程序,並從一些普通的舊腳手架從頭開始嘗試這個過程,它工作正常。

任何想法??

回答

1

在你的應用助手,做這樣的事情(假設你有紅寶石1.9 *爲龍頭的功能,否則結賬軌道返回here):

def setup_user(user) 
    user.tap do |u| 
     u.build_retailer if u.retailer.nil? 
    end 
    end 

那麼在你看來它改成這樣:

<%= form_for (setup_user(@user), :url => registration_path(@user, :type => "retailer) do |f| %> 

看看是否有效。

相關問題