每天一剂Rails良药之Self-referential Many-to-Many Relationships

考虑一个UserStory,Person 1添加Person 2为好友,怎样让Person 2的好友列表中也有Person 1?
这里Person对自己Many-to-Many关联。

[code]
class AddPeopleAndTheirFriendsRelationship < ActiveRecord::Migration
def self.up
create_table :people do |t|
t.column "name", :string
end
create_table :friendships do |t|
t.column "person_id", :integer
t.column "friend_id", :integer
end
end
def self.down
drop_table :people
drop_table :friendships
end
end

class Person < ActiveRecord::Base
has_and_belongs_to_many :friends,
:class_name => "Person",
:join_table => "friendships",
:association_foreign_key => "friend_id",
:foreign_key => "person_id",
:after_add => :be_friendly_to_friend,
:after_remove => :no_more_mr_nice_guy
def be_friendly_to_friend(friend)
friend.friends << self unless friend.friends.include?(self)
end
def no_more_mr_nice_guy(friend)
friend.friends.delete(self) rescue nil
end
end
[/code]
这里:after_add和:after_remove是不是有点filter的意思?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值