我正在编写一个 Rails 3.2 应用程序,我敢肯定这种类型的需求经常出现。在我的应用程序中,我有以下 ActiveRecord 模型:
- 用户
- 信息
- 联系人
- MessageContacts(消息 <-> 联系人的 has_many 直通表)
我想确保当用户创建新消息时,他们只能将自己的联系人添加到消息中。很想听听可以使这个过程干燥的建议和/或相关的宝石(cancan?)。
以下是我整理的内容,它似乎有效,但想知道我是否以正确的方式进行。
class Message < ActiveRecord::Base
belongs_to :user
has_many :message_contacts
has_many :contacts, through: :message_contacts
validates_each :contacts do |record, attr, contacts|
contacts.each do |contact|
record.errors.add(attr, 'must belong to you') if contact.user_id != record.user_id
end
end
end