有条件地保存has_many_through关系

时间:2016-10-02 06:55:54

标签: sql ruby-on-rails

在Rails中,如何在has_many_through关系上有条件地关联记录?使用以下Rails文档示例:

class Physician < ApplicationRecord
  has_many :appointments
  has_many :patients, through: :appointments
end

class Appointment < ApplicationRecord
  belongs_to :physician
  belongs_to :patient
end

class Patient < ApplicationRecord
  has_many :appointments
  has_many :physicians, through: :appointments
end

假设我想要预约两位医生。也就是说,没有任何预约记录,只有少于两名医生。但是,那个约会怎么能引用每个医生呢?

示例

基本上,我想跟踪喜欢其他用户和他们之间相互喜欢的用户。当两个用户彼此喜欢时建立连接。但是,当只有一个用户喜欢另一个用户时,我不想要连接,但这不是互惠的。

当用户A喜欢用户B. A&#34;喜欢&#34;被建造。 当用户B喜欢用户A. A&#34;喜欢&#34;被建造。 A&#34;连接&#34;也是创造的。

连接应该可以调用: connection.users

用户应该可以致电: user.likes user.connections

我遇到的问题是,当这种关系表是相互的时,它怎么知道呢?

1 个答案:

答案 0 :(得分:0)

对于原始问题,const TodoItems = React.creatClass({ getInitialState() { return { items : [ {id:1,name:"Gym"}, {id:2,name:"Jump"}, {id:3,name:"Racing"} ] } }, renderItem(){ return( <ul> this.state.items.map(item,i => <li key={i}>item.name</li> ) </ul> ) }, render(){ return ( <renderItem /> ) } }) 在两个用户之间没有区别,所以我会将其建模为connection关系并验证它只有两个用户。

类似有两个用户,one to many(类似的提供者)和liker(类似的接收者)。每次创建新likee时,都应检查like是否也喜欢likeeliker如果是,则与两个用户创建新连接。

If likee.likes.where(likee: liker)?

我想补充一点,我不是100%肯定这一点,因为我现在正在学习Rails。但这就是我想出来的,希望它有用(也是正确的)。