简而言之,当我创建Transaction
记录时,它有两个外键。对于参与Transaction
的两个用户,即:
现在,在您的帮助下我想知道的是,如何在User
和Transaction
模型之间建立关系,以便对于两个Transaction
中的任何一个,我都可以轻松检索所有User
。
类似的东西:
user_one = User.find(1)
user_two = User.find(2)
user_one.transactions # returns all Transactions where user_one.id ==
# user_one_id Or user_one.id == user_two_id
user_two.transactions # returns all Transactions where user_two.id ==
# user_one_id Or user_two.id == user_two_id
实现这一目标的最佳方法是什么?在这种情况下,最好在事务模型中建立外键吗?或者这是仅通过ActiveRecordQuery
解决的问题?
提前致谢。
答案 0 :(得分:1)
如果您有两个用户ID并希望在其中某些组合上查询Transaction
,则可以使用or
子句:
>> Transaction.where(user_one_id: 1).or(Transaction.where(user_two_id: 2))
Transaction Load (4.3ms) SELECT "transactions".* FROM "transactions" WHERE ("transactions"."user_one_id" = $1 OR "transactions"."user_two_id" = $2) LIMIT $3 [["user_one_id", 1], ["user_two_id", 2], ["LIMIT", 11]]
=> #<ActiveRecord::Relation [#<Transaction id: 1, user_one_id: 1, user_two_id: 2, created_at: "2017-09-12 23:25:39", updated_at: "2017-09-12 23:25:39">]>
答案 1 :(得分:1)
这是示例代码
class Transaction
def move
return ""
end
end
class User1 < Transaction
def move
return 'User1 move: X'
end
end
class User2 < Transaction
def move
return'User2 move: O'
end
end
transactions = [User1.new, User2.new]
transactions.each {|tran|
print tran.move
}
答案 2 :(得分:0)
使用可以解决这个问题的多面体分析我现在在火车上会为你提供代码,或者你可以开始寻找这个任务并祝你好运;)