Ruby on rails Rails 3中的用户朋友关系模型
我是一名新的Rails开发人员,我正在尝试建立一种用户朋友关系(Facebook风格),比如它既有朋友又有订阅系统。 我在一些博客和书籍上读到过它,但我觉得我找不到一个非常合适的实现Ruby on rails Rails 3中的用户朋友关系模型,ruby-on-rails,ruby-on-rails-3,social-networking,Ruby On Rails,Ruby On Rails 3,Social Networking,我是一名新的Rails开发人员,我正在尝试建立一种用户朋友关系(Facebook风格),比如它既有朋友又有订阅系统。 我在一些博客和书籍上读到过它,但我觉得我找不到一个非常合适的实现 我希望数据库中只有一个条目对应于每个关系,所以我用字段(user\u id,friend\u id,status,type)建模了我的关系表,其中type={friend,subscriber}和status={accepted,hold} 我想实现发送请求、接受请求、取消请求、取消好友、删除请求、订阅、取消订阅等
class用户:destroy
有很多:关系,:外键=>:user\u id,:dependent=>:destroy
有很多:反向关系,:外键=>“朋友id”,:类名=>“关系”,:依赖=>:销毁
有很多:直接的朋友,:通过=>:关系,:条件=>“状态='接受'”,:来源=>:朋友
有很多:反向朋友,:通过=>:反向关系,:条件=>“状态=‘已接受’”,:来源=>:用户
有很多:请求的朋友,:通过=>:反向关系,
:source=>:friend,:conditions=>“status='hold'”,:order=>:created_at
有很多:待定的朋友,:通过=>:关系,
:source=>:user,:conditions=>“status='hold'”,:order=>:created_at
可访问属性:电子邮件、密码、密码确认、记住我
def朋友
直接的朋友|反向的朋友
终止
.
.
.
欢迎来到StackOverflow。你肯定做了功课。我认为这里唯一的错误是你没有问问题。我本来打算通过发布BDD和TDD的链接来回答这个问题,但这似乎是不礼貌的。我的建议是,不要试图让每件事都同时进行。一步一个脚印地往上走,当有些事情不起作用或者你不知道如何继续时,发布一个问题。有很多方法,这取决于你需要在每个“友谊”上保留多少信息(对谷歌来说绝对不是一件容易的事情)。rails 2的书也很不错:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
has_one :profile, :dependent => :destroy
has_many :relationships, :foreign_key => :user_id, :dependent => :destroy
has_many :reverse_relationships, :foreign_key => "friend_id", :class_name => "Relationship", :dependent => :destroy
has_many :direct_friends, :through => :relationships, :conditions => "status = 'accepted'", :source => :friend
has_many :reverse_friends, :through => :reverse_relationships, :conditions => "status = 'accepted'", :source => :user
has_many :requested_friends, :through => :reverse_relationships,
:source => :friend, :conditions => "status = 'hold'", :order => :created_at
has_many :pending_friends, :through => :relationships,
:source => :user, :conditions => "status = 'hold'", :order => :created_at
attr_accessible :email, :password, :password_confirmation, :remember_me
def friends
direct_friends | reverse_friends
end
.
.
.