如果你要参考相关的数据,你需要使用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是的,我已经在模型中设置了验证 –