私はいくつかのモデルを持っています...ユーザーモデル、コレクションモデル、インスピレーションモデル...
コレクションモデル 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
問題が発生している星の間のインスピレーションという言葉
乾杯、ジャスティン