mysql - 能够在 Rails 控制台中将自己添加为好友

标签 mysql ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

我已经建立了一个用户和 friend 关系模型,但问题是通过这些关联我可以给自己加好友。我已经成功地在我的 View 和 Controller 中抑制了它,但从逻辑上讲,它应该在模型中被抑制,因为我仍然可以从控制台创建我想避免的友谊。

用户模型

has_many :user_friendships
has_many :friends, through: :user_friendships,
                conditions: { user_friendships: { state: 'accepted' } }

用户友谊模型

belongs_to :user
belongs_to :friend, class_name: 'User', foreign_key: 'friend_id'

其他一切都运行良好,例如添加、阻止、删除、请求好友,我的模型的唯一问题是我也可以为自己加好友,这是我想避免的。

最佳答案

UserFriendship添加验证:

validate :cannot_friend_self

def cannot_friend_self
  errors.add(:friend_id, "cannot friend self") unless user_id != friend_id
end

关于mysql - 能够在 Rails 控制台中将自己添加为好友,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16849232/

相关文章:

ruby-on-rails - Rails 应用 <select> 显示被覆盖

mysql - 连接多个 SQL 表

mysql - 在命令行中通过 ssh 在远程机器上运行 MySQL 查询

mysql - MySQL InnoDB 数据库可以有外列唯一性约束吗?

ruby-on-rails - Rails迁移: how to retrieve current migration version?

ruby-on-rails - Ruby:使用 Gems 处理重复性日历事件的经验?

ruby-on-rails - ActiveRecord 对象的 Ruby dup 方法

ruby-on-rails - 设置多态关联

ruby-on-rails - 需要在特定时间运行作业

php - 加密电子邮件、散列密码并将其存储在数据库中?