0

私はいくつかのモデルを持っています...ユーザーモデル、コレクションモデル、インスピレーションモデル...

コレクションモデル has_one インスピレーション

has_one :inspiration, :dependent => :destroy
belongs_to :user

インスピレーション モデルはコレクションに属しています

belongs_to :collection
belongs_to :user

ここに私のルートがあります

resources :collections do
  resources :inspiration
end

これが私のInspirationControllerです(複数形ではありません)

def index
  @collection = Collection.find(params[:collection_id])
  @inspiration = @collection.inspiration
end

def new
  if signed_in? && current_user == @collection.user
    @user = current_user
    @collection = @user.collections.find(params[:collection_id])
    @inspiration = @collection.inspiration.new
  elsif signed_in? && current_user != @collection.user
    flash[:error] = "That's not your collection."
    redirect_to root_url
  else
    flash[:error] = "Please sign in."
    redirect_to login_url
  end
end

インスピレーションに対する私の見方も特異です (インスピレーションではありません)

Rails をずっと使ってきましたが、それほど長くはありませんでしたが、has_one 関連付けを使用する必要はありませんでした。

ページを表示すると、2 つのエラーのいずれかが表示されます...

1 つは、InspirationController の各アクションの 2 行目に由来する未定義のインスピレーション メソッドです。もう 1 つは、ビューに if ステートメントがあるため、未定義のメソッド COUNT です。

if @collection.inspiration.count > 0 
   foobar foobar
end 

Railsコンソールで、特定のコレクションのインスピレーションの数を見つけようとすると、適切なクエリを実行していないことがわかります....

誰でもこの問題に光を当てることができますか、このタイプの関連付けについて読むための良いリソースを教えてくれますか...事前に感謝します

has_many アソシエーションに対して通常行うのとは異なる点を 1 つ指摘しておきます... 1. ルート、ビュー、およびコントローラーを含むかなりの数の場所で、複数の「インスピレーション」の代わりに単数形の「インスピレーション」を使用しました。

新しいインスピレーション を作成しようとすると、次のエラーが表示されます。

undefined method `inspiration'

新しいアクションを指す

@user = current_user
@collection = @user.collections.find(params[:collection_id])
@inspiration = @collection.**inspiration**.new

問題が発生している星の間のインスピレーションという言葉

乾杯、ジャスティン

4

1 に答える 1