2015-11-01 4 views
1

Я следую Майкл Hartl учебник и хочу установить метод, чтобы ограничить количество пользователей, человек может следоватьПользователя ограничение следующих квот

Должен ли я установить предел в модели/relationship.rb

приложение/модель/relationship.rb

validate :following_quota, :on => :create 

private 

def following_quota 
if user.active_relationships.size >= 3 
    error.add(:base, 'exceeded follow limit') 
end 
end 

или должен я установить это модель/user.rb

+0

требуется использовать пользовательские валидатор? Что такое active_relationships? Область? Отношение? – lcguida

+0

Контроллер более или менее предназначен для определения, какие виды визуализации и для сохранения. Такой код должен быть выборочной проверкой в ​​вашей модели. – MarsAtomic

+0

@MarsAtomic да Я установил валидацию в модели –

ответ

0

Если вы собираетесь ссылаться на связанные с ним данные, вы должны будете использовать 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 
+0

Я не думаю, что мне нужно создать обратную связь, если у меня есть метод destroy в контроллере отношений. Сейчас я проверяю проверку max_followers и получаю эту ошибку в журнале: NoMethodError (неопределенный метод 'active_relationships 'для nil: NilClass): app/models/relationship.rb: 16: in 'max_followers' app/models/user.rb: 46: in' follow ' app/controllers/relationship_controller.rb: 5: in ' Создайте' –

Смежные вопросы