如果你要參考相關的數據,你需要使用inverse_of
;
#app/models/user.rb
class User < ActiveRecord::Base
has_many :active_relationships, inverse_of: :user
end
#app/models/relationship.rb
class Relationship < ActiveRecord::Base
belongs_to :user, inverse_of: :active_relationships
end
你把驗證的地方取決於你打電話給哪個模型。
我想像你正在創建一個新的relationship
,這將意味着你把它放在關係模型,使用從user
關聯對象數據:
#app/models/relationship.rb
class Relationship < ActiveRecord::Base
belongs_to :user, inverse_of: :active_relationships
validate :max_followers, only: :create
private
def max_followers
error.add(:base, 'exceeded follow limit') if user.active_relationships.size >= 3
end
end
則需要使用自定義驗證器?什麼是主動關係?範圍?關係? – lcguida
控制器或多或少地找出要渲染的視圖和持久性。這樣的代碼應該是模型中的自定義驗證。 – MarsAtomic
@MarsAtomic是的,我已經在模型中設置了驗證 –