0

私はこのレビューモデルを持っています:

class Review < ActiveRecord::Base
  attr_accessible :approved, :reviewed_id, :for, :user_id, :text, :rating, :title

  belongs_to :business
  belongs_to :product
end

およびこの製品モデル:

class Product < ActiveRecord::Base
  include ApplicationHelper
  belongs_to :business
  belongs_to :catalog
  belongs_to :category

  has_many :reviews, :foreign_key => :reviewed_id
  has_many :features, :dependent => :destroy
end

そしてこのビジネスモデル:

class Business < ActiveRecord::Base
  validates_presence_of :name
  validates_presence_of :category

  mount_uploader :photo, PhotoUploader

  has_many :catalogs, :dependent => :destroy
  has_many :products, :dependent => :destroy
  has_many :branches, :dependent => :destroy
  has_many :reviews, :foreign_key => :reviewed_id
end

ただし、Reviews コントローラーで次の create アクションを使用すると、次のようになります。

def create
  @business = Business.find(params[:business_id])

  if params.has_key?('product_id')
    @product = Product.find(params[:product_id])
    @review = @product.reviews.build(params[:review])

    if @review.save
      flash[:notice] = 'Pending Review Submitted'
      redirect_to business_product_path(@business, @product)
    else
      @form_resources = [@business, @product, @review]
      respond_with(@business, @product, @review)
    end
  else
    @review = @business.reviews.build(params[:review])

    if @review.save
      flash[:notice] = 'Pending Review Submitted'
      redirect_to business_path(@business)
    else
      @form_resources = [@business, @review]
      respond_with(@business, @review)
    end
  end
end

関連付けを保存できません。simple_form はエラーがあると言っていますが、ログにエラーが表示されず、他のすべてのフィールドが検証されているため、関連付けに問題があると推測しています。

副次的な質問: simple_form ですべてのエラーを表示するにはどうすればよいですか?

4

1 に答える 1

0

ポリモーフィック アソシエーションを使用し、レビュー モデルで for と reviewed_id を取り除くことで、この問題を修正しました。ここを参照してください:

http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

于 2012-08-10T07:08:27.300 に答える