2

私はRailsを初めて使用し、助けを求めずにMichael Hartlのチュートリアル(RoR3 ed1)をなんとかやり遂げたと思っていましたが、ようやく困惑しました。誰かが何か提案をすることができますか?

私の問題は、セクション12.1のUsersモデルのfollow!()メソッドにあります。ユーザーをメソッドに渡し、foreignIDをリレーションシップに格納しようとすると、nilとして渡されます。

1.9.2p290 :023 > user1=User.find(1)
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 1]]
 => #<User id: 1, name: "Example User", email: "example@railstutorial.org", created_at: "2012-10-20 18:48:38", updated_at: "2012-10-20 18:48:38", encrypted_password: "cd8e8ad53b1157789cb004de14bc14112786981004b51bd1576...", salt: "d947c9bcb6563fd8c70d3d1c64c9d82507a89b936ea0cbfd3e4...", admin: false> 
1.9.2p290 :024 > user2=User.find(4)
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 4]]
 => #<User id: 4, name: "Mrs. Carmelo Witting", email: "example-2@railstutorial.org", created_at: "2012-10-20 18:48:38", updated_at: "2012-10-20 18:48:38", encrypted_password: "c0f2c8f998bc1b9bf76c9196176828dc543ceeb2a28f7b81c2d...", salt: "3c134e8fd391db0b9b21f0e08ddda7bfd8d16b3abe6726d517d...", admin: false> 
1.9.2p290 :025 > user1.follow!(user2)
  SQL (1.9ms)  INSERT INTO "relationships" ("created_at", "followed_id", "follower_id", "updated_at") VALUES (?, ?, ?, ?)  [["created_at", Mon, 22 Oct 2012 11:16:38 UTC +00:00], ["followed_id", nil], ["follower_id", 1], ["updated_at", Mon, 22 Oct 2012 11:16:38 UTC +00:00]]
 => #<Relationship id: 8, follower_id: 1, followed_id: nil, created_at: "2012-10-22 11:16:38", updated_at: "2012-10-22 11:16:38"> 

これがユーザーモデルの関連ビットです。これを引き起こしているのは何ですか?

class User < ActiveRecord::Base
.
.
  has_many :relationships, :foreign_key => "follower_id",
                           :dependent => :destroy
  has_many :following, :through => :relationships, :source => :followed
.
  def follow!(followed)
    relationships.create!(:followed_id => followed.id)
  end

end
4

1 に答える 1

0

それを解決しました。リレーションシップモデルのfollowed_idには、attr_accessibleではなくattr_accessorを記述しました。

ドー

于 2012-10-22T18:27:59.757 に答える