1

User クラスには、次のものがあります。

has_many :posts, foreign_key: "by_user_id"

これにより、次のSQLが生成されます(呼び出したときuser.posts

SELECT "posts".* FROM "posts" 
WHERE "posts"."by_user_id" = 2

次の sql を生成する関連付けを定義するにはどうすればよいですか?

SELECT "posts".* FROM "posts" 
WHERE "posts"."by_user_id" = 2 or "posts"."group_user_id" = 2

Posts テーブルには両方の列 (by_user_idgroup_user_id)が含まれておりgroup_user_id、ユーザーの ID でもあります。

4

2 に答える 2

1
Post.where(by_user_id: 2, group_user_id: 2)

これはあなたが探しているものですか?

于 2013-03-22T16:39:41.097 に答える
0

解決策は、User モデル内でクラス メソッドを使用することです。

def posts
  Post.where('by_user_id = ? or group_user_id = ?', id, id)
end
于 2013-03-22T20:08:10.877 に答える