基本的に私はRailsのチュートリアルに従っています(私は多くの問題を抱えていましたが、それらのほとんどは簡単に解決できました)が、今私はちょうどこの章を始めると私は問題を抱えています。Rails 5.0 Chapter 14 Micheal Hartlチュートリアル未定義のローカル変数active_relationship
ここでは、チュートリアル(表14.1のエクササイズ2の後)のlinkですが、変数が定義されていないため、私は現在このエクササイズでブロックされています。
irb(main):035:0> active_relationship.follower \r
NameError: undefined local variable or method `active_relationship' for main:Object
from (irb):35
私は、我々は関係の作品を作成し、我々はhas_many:
とbelongs_to:
を通じて作成関係をしようとしていることを知っているがやっている正確に理解していません。ここで
irb(main):021:0> user.active_relationships.create!(followed_id: 2)\r
(0.1ms) begin transaction
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]]
SQL (0.3ms) INSERT INTO "relationships" ("follower_id", "followed_id", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["follower_id", 1], ["followed_id", 2], ["created_at", 2017-06-27 20:49:11 UTC], ["updated_at", 2017-06-27 20:49:11 UTC]]
(57.3ms) commit transaction
=> #<Relationship id: 1, follower_id: 1, followed_id: 2, created_at: "2017-06-27 20:49:11", updated_at: "2017-06-27 20:49:11">
がたて作成されたファイルの内容です:
アプリ/モデル/ relationship.rb
class Relationship < ApplicationRecord
belongs_to :follower, class_name: "User"
belongs_to :followed, class_name: "User"
end
アプリ/モデル/ user.rb
class User < ApplicationRecord
has_many :microposts, dependent: :destroy
has_many :active_relationships, class_name: "Relationship",
foreign_key: "follower_id",
dependent: :destroy
.
.
.
問題はここにあります:なぜ変数(active_relationship
)が定義されていないのですが、Rela tionships.allはこれを示しています
#<ActiveRecord::Relation [#<Relationship id: 1, follower_id: 1, followed_id: 2, created_at: "2017-06-27 20:49:11", updated_at: "2017-06-27 20:49:11">]>
それは、このような関係が作成され、保存されていることを意味し、したがって、メソッド、とactive_relationship.follower
を介してアクセス可能でなければなりません。 しかし、彼らは定義されていないと私は彼らがなぜそうではないのか分からない。 この小さな問題を解決するのに役立つ情報があれば、私は喜んでください。
私は同じ問題を抱えていましたが、解決策は 'create'アクションから返された値を_assign_に割り当てることでした!この本はそれが_thing_のように読む。ですから、これに感謝しています。 – OnlySteveH