0

標準の has_many :through 関係に対してモデルを正しく設定していると確信しています...ただし、モデルの作成に Rails ジェネレーターを使用しましたが、初めて実行したときに誤ってCategorizations(複数)の代わりにCategorization、エラーに気付く前にすべてをセットアップしました。移行をロールバックし、ジェネレーターによって作成された 4 つのファイル (migration、model、spec、factory) を削除しました。私は最初からやり直しましたが、まだ Association :category not foundエラーが発生しています。

私の主な質問: 複数の名前を持つモデルを誤って作成して削除したため、元に戻す必要があるものは他にありますか?

フォローアップの質問: それが問題でない場合、何が間違っているのでしょうか? これをずっと見つめていたので、目立った見落としはありますか?

フォローアップからフォローアップ: この問題のトラブルシューティングを行うために、他に何ができますか? コンソールですべてのモデルにアクセスでき、正しく設定されているようです。rake routesモデルの関連付けはありますか?

これが私の見解です:

<%= f.association :category %>

私も試しました:

<%= f.association :category, :required => true, :collection => @categories, :as => :check_boxes, :label => "Categories:" %>(コントローラーに @categories を設定しました

モデルは次のとおりです。

class PressRelease < ActiveRecord::Base
  has_many :categorizations
  has_many :categories, :through => :categorizations

  belongs_to :user
  belongs_to :press_contact

  attr_accessible :body, :summary, :user_id, :headline, :link, :press_contact_id, :publish_date, :subheadline

  self.per_page = 5

  def published
    "#{self.publish_date.strftime("%A, %B %d, %Y")}"
  end

end

class Category < ActiveRecord::Base
  has_many :categorizations
  has_many :press_releases, :through => :categorizations
  attr_accessible :description, :label
end

class Categorization < ActiveRecord::Base
  belongs_to :category
  belongs_to :press_release

  attr_accessible :category_id, :press_release_id

end

更新:これはすべてコンソールで機能します:

pr = PressRelease.first
pr.categories
Category Load (0.2ms)  SELECT "categories".* FROM "categories" INNER JOIN "categorizations" ON "categories"."id" = "categorizations"."category_id" WHERE "categorizations"."press_release_id" = 1

c = Category.first
c.press_releases
PressRelease Load (0.3ms)  SELECT "press_releases".* FROM "press_releases" INNER JOIN "categorizations" ON "press_releases"."id" = "categorizations"."press_release_id" WHERE "categorizations"."category_id" = 21
 => [] 

そのため、協会は一定のレベルで機能しているようです。私は、小さくて明白な何か、または巨大でまぶしい何かを見逃していることにますます自信を持っています. 助けてください!ありがとう!

4

1 に答える 1

1

作業している場合は、関係のためにforPressReleaseを使用し、 for を<%= f.association :categories %>変更する必要があります。:category:categories

于 2012-12-09T20:03:23.870 に答える