2017-09-04 50 views
0

1つのメソッドで同じモデルに属する2つのモデルの新しいレコードを作成する必要があります。2つのモデルのhas_oneに新しいレコードを同時に作成する方法は?

これはこれは私がフォームを送信するとき、私のコントローラメソッド

def create 
    promotion = Promotion.new 
    promotion.build_promotion_eng(promotion_eng_params).build_promotion_thai(promotion_thai_params) 

    if promotion.save 
     flash[:success] = 'Success Created Promotion' 
     redirect_to admins_promotions_path 
    else 
     errors_message = promotion.errors.full_messages.join(', ') 

     redirect_to admins_promotion_new_path, :flash => { :error => errors_message } 
    end 
    end 

が、私は常にこのエラーにこのライン

undefined method `build_promotion_thai' for #<PromotionEng:0x007f9fdbcb0250> Did you mean? build_promotion 

を持っている

class Promotion < ApplicationRecord 
    has_one :promotion_thai ,dependent: :destroy 
    has_one :promotion_eng ,dependent: :destroy 
end 

class PromotionThai < ApplicationRecord 
    belongs_to :promotion 

    mount_uploader :long_banner, PromotionImageUploader 
    mount_uploader :square_banner, PromotionImageUploader 
    mount_uploader :details_image, PromotionImageUploader 

    validates :promotion_id, presence: true 
    validates :title, presence: true 
    validates :description, presence: true 

    #validates :long_banner, presence: true 
    #validates :square_banner, presence: true 

end 

class PromotionEng < ApplicationRecord 
    belongs_to :promotion 

    mount_uploader :long_banner, PromotionImageUploader 
    mount_uploader :square_banner, PromotionImageUploader 
    mount_uploader :details_image, PromotionImageUploader 

    validates :promotion_id, presence: true 
    validates :title, presence: true 
    validates :description, presence: true 

    validates :long_banner, presence: true 
    validates :square_banner, presence: true 

end 

私のモデルであります

promotion.build_promotion_eng(promotion_eng_params).build_promotion_thai(promotion_thai_params) 

このような問題を解決するにはどうすればよいですか?

ありがとうございます!

答えて

1

これは、build_promotion_eng(promotion_eng_params)がPromotionEngインスタンスを返すためです。

これは正常に動作するはずです。

promotion.build_promotion_eng(promotion_eng_params) 
promotion.build_promotion_thai(promotion_thai_params) 
+0

これは素晴らしいですが、検証がもう機能していないようです。 あなたはそれを動作させる方法を知っていますか? – user3403614

+0

どの妥当性検査ですか?プロモーションモデルには検証がありません。 –

関連する問題