Rails 5.0 Chapter 14 Micheal Hartl Tutorial undefined local variable active_relationship

Rails 5.0 Chapter 14 Micheal Hartl Tutorial undefined local variable active_relationship

基本上我一直在关注 Rails 教程(我遇到了很多问题,但大多数问题都很容易解决)但现在我才刚刚开始这一章,我我 运行 在一个问题中。

这是教程的 link(在 table 14.1 练习 2 之后),由于未定义变量,我目前无法进行练习。

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">

这是新创建的文件的内容:

app/models/relationship.rb

class Relationship < ApplicationRecord
  belongs_to :follower, class_name: "User"
  belongs_to :followed, class_name: "User"
end

app/models/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) 没有定义,但在控制台调用 Relationships.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.followedactive_relationship.follower 访问它。 但是它们没有定义,我不知道为什么没有。 如果需要更多信息,请提出要求,如果它能帮助我解决这个小问题,我会很高兴。

您可以使用 user.active_relationships 来访问您的关系的元素,它是一个关系数组(关注者/被关注的关系),或者您可以将 user.active_relationships.create 的结果存储为 active_relationship.

您的问题是 active_relationship 在您的上下文中未定义,教程一定假定您根据 create 的 return 值或通过访问数组存储了该值关系。