Вы используете ассоциацию User#requests
, которая не имеет никакого представления о ваших условиях на Request#user
.
aUser.requests.create
создает и сохраняет объект Request
на основе любых условий, заданных на requests
сопоставление и добавляет его в список связанных запросов.
Конечно, Request
может иметь ассоциацию user
, но это никогда не используется в ваших примерах.
И даЭто приводит к странному поведению и несоответствиям:
>> user = User.create(:can_make_requests => false)
=> #<User id: 3, can_make_requests: false>
>> request = user.requests.create
=> #<Request id: 2, user_id: 3>
>> request.user
=> nil
>> user.requests
=> [#<Request id: 2, user_id: 3]
Если вы хотите применить его на уровне запроса с помощью проверок, вы можете сделать что-то вроде:
class Request < ActiveRecord::Base
validates :user, :presence => true
validate :user_can_make_requests
def user_can_make_requests
errors[:user] << 'cannot make requests' if user && !user.can_make_requests?
end
end