这是我第一次使用foreign_key,我不知道如何为它创建验证。问题是这样的:
我正在创建聊天请求和聊天框应用。
我有这样的chatrequest模型。
chatrequest.rb
has_many :conversations
belongs_to :user
接下来,我有一个会话模型,用户在接受聊天请求时批量处理。
conversation.rb
belongs_to :chatrequest
belongs_to :sender, foreign_key: "sender_id", class_name: "User"
belongs_to :recipient, foreign_key: "recipient_id", class_name: "User"
逻辑已经有效了。我创建了一个link_to函数,它结合了创建聊天对话模型,如下所示:
<p>
<%= link_to 'Chat me', conversations_path(sender_id: current_user.id, recipient_id: @chatrequest.user.id, chatrequest_id: @chatrequest.id), method: 'POST' %>
</p>
现在,我想要实现的是这三种验证:
对不起,如果有点难,我真的不知道该怎么办。如果您有代码段,请同时发布。提前谢谢!
答案 0 :(得分:1)
您可以创建自己的方法来验证几乎任何东西以及使用ActiveRecord。如果你自己做,你可以用丑陋的方式做到:
validate :conversation_is_valid
def conversation_is_valid
errors.add(:recipient, "can't be the sender") if recipient_id != current_user
errors.add(:sender, "needs to be the current user") if current_user.id == sender_id
errors.add(:chatrequest, "user needs to be the recipient") if chatrequest.user.id == recipient_id
end
这将确保检查您的所有要求,如果不是这样,它将不会持续存在。否则,它会通知您错误。有多种方法,请查看Validations Guide