Fd779852eb8e519999f8b35c47777608

mater/slave table的新增

2012-01-03 23:05:21 +0800chiayiRuby on Rails 節點 中發起
最後由 chitsung2012-01-04 12:41:29 +0800回應 , 315次閱讀

class User < ActiveRecord::Base
  has_one :vendor
end

class Vendor < ActiveRecord::Base
  belongs_to :user, :dependent=>:destroy
end

請問該如何同時新增user和vendor資料?

我用下列方式同時新增user和vendor,在user沒新增成功時,該怎麼做讓view可以顯示資料輸入有誤?
謝謝

# views/vendor/new.html.erb

def create
    @user=User.new(params[:user])
    if @user.save
      @vendor=Vendor.new(params[:vendor])
      if @vendor.save
        redirect_to :index
      else
        render :new
      end
    else
      logger.debug "[debug] #{@user.errors.inspect}"
      render :new
    end      
end

截至 2012-01-04 12:41:29 +0800,共收到 3 條回應
Fd779852eb8e519999f8b35c47777608
chiayi 1樓, 於2012-01-04 10:36:46 +0800回應

我想一個action就做完兩個model的create
我在vendor的create裡怎麼把user.errors加到vendor.errors,讓view可以顯示出來?
或是這個設計不好,我該怎麼做?
感謝

Fd779852eb8e519999f8b35c47777608
chiayi 2樓, 於2012-01-04 10:57:55 +0800回應

已解決
@user.errors.full_messages.each do |error|
@vendor.errors.add(:base, error)
end

2b0e03ef8ff7fd827f57f53c79346bc3
chitsung 3樓, 於2012-01-04 12:41:29 +0800回應

題外話:何不在 user 的 controller 裡處理 user 的新增,用 user 的 observer 來建立 vendor 的資料?

需要 登入 後方可回應,如果你還沒有帳號按這裡 註冊