2016-08-27 12 views
0

ユーザーがFollowingRelationshipRailsの自己

を介して他のユーザーを追跡することができます関係を通じてhas_manyのに参加する私は

User.first.followingsを言うことができるようにしたいと思い、それはこれがないユーザー

のリストを返します。作業:

Class User 

    has_many :following_relationships 
    has_many :followings, through: :following_relationships, foreign_key: :following_id, source: :user 

end 

Class FollowingRelationship 
    attr_accessible :following_id, :follower_id 

    belongs_to :followings, class_name: "User" 

end 

User.first.followings consoファイル:

SELECT "users".* FROM "users" INNER JOIN "following_relationships" ON "users"."id" = "following_relationships"."user_id" WHERE "following_relationships"."user_id" = 1 
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: following_relationships.user_id: SELECT "users".* FROM "users" INNER JOIN "following_relationships" ON "users"."id" = "following_relationships"."user_id" WHERE "following_relationships"."user_id" = 1 

誰かが紛失していますか?

答えて

2

FollowingRelationshipモデルはUserとは関係ありません。
source: :userを指定しているので、belongs_to :userにする必要がありますか?

私はモデルとその関係をよく理解していませんが、belongs_to :followingsはかなり奇妙に見えます。
belongs_toは、複数のオブジェクトに属することができないため、単数形を使用します。

更新1
もっと明確にする。 私はあなたがfollowings_relationships表はuser_idfollower_id列を持つべきである意味

class FollowingRelationship 
    … 
    belongs_to :user 
    belongs_to :follower 
end 

を持つべきだと思います。我々はそれを考え出したいくつかの会話の後

UPDATE 2
。あなたは

class User < ActiveRecord::Base 

    has_many :fade_relationships, foreign_key: :faded_id 

    has_many :fadings, through: :fade_relationships, source: :fading 

end 

class FadeRelationship < ActiveRecord::Base 
    attr_accessible :faded_id, :fading_id 

    belongs_to :fading, class_name: "User" 

end 
+0

を持つ必要があります。ここ がコードである私がUser.first.followingsを言うことできるようにしたいのですが、それはあなたがFollowingRelationshipは、ユーザとは関係がないことを言うユーザー – slindsey3000

+0

のリストを返します。私はそのクラスでこれを持っています... belongs_to:follows、class_name: "User" ...私はここでユーザーとの関係を確立しています。 – slindsey3000

+0

はい、最初は見たことがありません。 'User.first.followings'は、' following'が 'FollowingRelationship'ではなく' User'モデルになければならないことを意味します。 – Aleksey