轨道中的活动记录关联,用于秘密圣诞老人类型的买方/接收者关系



试图让我的头脑围绕正确的表格和关联来关联用户模型,以便用户既可以是其他用户礼物的购买者,也可以是礼物的接收者。每个用户只能是一个其他用户的买家,并且只能是一个其他用户的接收者。

看起来您只需要进行一些验证的简单迁移。

rails generate migration AddSantaRefToUsers

将迁移编辑为:

class AddSantaRefToUsers < ActiveRecord::Migration
def change
add_column :users, :santa_id, :integer
add_index :users, :santa_id
end
end

运行迁移rake db:migrate然后更新用户模型。

class User
has_one :santa, foreign_key: 'santa_id'
belongs_to :santa, class_name: 'User'
validate :can_be_santa
validates :santa_id, uniqueness: true # this means no duplicate Santas
private
def can_be_santa
if self.santa == self
self.errors.add(user_id:, "You can't be your own Santa!")
end
end
end

然后让某人成为另一个用户的圣诞老人应该像以下一样简单:

user1.santa = user2 

相关内容

  • 没有找到相关文章

最新更新