0
我有一個在自引用的模型中有很多直通關係。在連接表中,我還有一個額外的列來定義關係的來源。當添加一個新的對象到關係我想避免的基礎上user_ID的連接表副本,friend_id和SOURCE_ID如何在Ruby on Rails中驗證連接表的額外列的唯一性
用戶模型
class User < ActiveRecord::Base
has_many :friendships
has_many :friends, :class_name => "User", :through => :friendships
end
加入型號
class Friendship < ActiveRecord::Base
attr_accessible :friend_id, :user_id, :source_id, :alert, :hide
# Relationships
belongs_to :user
belongs_to :friend, :class_name => "User"
has_one :source
end
我知道我能做到這一點
unless user.friends.include?(newFriend)
user.friendships.build(:friend_id => friendUser.id, :source_id => source.id)
end
但是,好像它會檢查,看看是否新用戶存在於當前用戶的朋友中。我需要檢查連接模型級別並確保連接不存在於給定的源ID中。
我知道有幾種方法可以做到這一點,但我對軌道上的ruby非常陌生,並且正在尋找「rails方式」來實現它。
優秀。這會給我一個保存錯誤嗎?或者只是不保存重複的記錄? – smokingoyster 2013-03-27 13:57:10
如果您嘗試保存它,它應該會給您和錯誤。 – Zippie 2013-03-27 13:57:42
那會靜靜地死去嗎?或者我每次救人時都必須開始救援? – smokingoyster 2013-03-27 14:00:24