0

私はモデル「レシピ」を持っています。これがモデルです。

https://github.com/mikeyhogarth/Nomelette/blob/master/app/models/recipe.rb

動的ファインダーを使用して、このようなコードを書くことができます。

Recipe.find_all_by_name "spaghetti bolognaise"

しかし、次のようにすると「NoMethodError」が表示されます

Recipe.find_all_by_category 1

モデルからわかるように、この機能のために独自のファインダー メソッドを作成する必要がありました。構文に何かが欠けているだけですか、それとも動的ファインダーは、特定のモデルに固有の列であるプロパティ (関連付けではない) でのみ機能しますか?

4

1 に答える 1

3

Recipe には「category」という名前の列/属性がありません (これは多対多の関連付けであるため)。そのため、メソッドfind_all_by_categoryは生成されません。

できることは次のとおりです。

recipes = Category.find(1).recipes

Recipe belongs_to :categoryとの場合は違っていたでしょうCategory has_many :recipes。この場合:

recipes = Recipe.find_all_by_category_id(1)

レシピ テーブルにはcategory_id... という名前の列があるため、

于 2012-02-01T18:46:15.073 に答える