отметьте нужный элемент вкладки (я предполагаю, что вы хотите открыть упражнение на case 2
, если я прав, если нет, измените код соответствующим образом):
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position){
case 0:
fragment = new Frag1();
break;
case 1:
fragment = new Frag2();
break;
case 2:
//open new activity
startActivity(new Intent(CurrentClassName.this, OtherClassName.class));
break;
case 3:
fragment = new Frag4();
break;
case 4:
fragment = new Frag5();
break;
}
return fragment;
}
Пожалуйста, Обязательно измените CurrentClassName
на имя класса действия TabLayout и OtherClassName
на класс, который вы хотите открыть!
Так как проверки воздействуют на экземпляры (и они используют ошибочный атрибут экземпляра как контейнер для сообщений об ошибках), Вы не можете использовать их, не инстанцируя объекта. Однако можно скрыть это необходимое поведение в метод класса:
class User < ActiveRecord::Base
def self.valid_attribute?(attr, value)
mock = self.new(attr => value)
unless mock.valid?
return mock.errors.has_key?(attr)
end
true
end
end
Теперь, можно звонить
User.valid_attribute?(:login, "login value")
так же, как Вы предназначили.
(Идеально, Вы включали бы тот метод класса непосредственно в ActiveRecord:: Основа, таким образом, это было бы доступно каждой модели.)
Я пошел с пользовательским решением для класса, но я просто хотел удостовериться, что не было никакого лучшего пути
class ModelValidator
def self.validate_atrribute(klass, attribute, value)
obj = Klass.new
obj.send("#{attribute}=", value)
obj.valid?
errors = obj.errors.on(attribute).to_a
return (errors.length > 0), errors
end
end
и я могу использовать его как
допустимый, ошибки = ModelValidator.validate_attribute (Пользователь, "вход в систему", "humanzz")
Использовать Ваши стандартные стандартные программы проверки:
User.new(:login => 'login_value').valid?
Если это не работает на Вас, создайте пользовательский метод класса для этого:
class User < ActiveRecord::Base
validate do |user|
user.errors.add('existing') unless User.valid_login?(user.login)
end
def self.valid_login?(login)
# your validation here
!User.exist?(:login=> login)
end
end
Реализация 'valid_attribute' метода Вы предлагаете:
class ActiveRecord:Base
def self.valid_attribute?(attribute, value)
instance = new
instance[attribute] = value
instance.valid?
list_of_errors = instance.errors.instance_variable_get('@errors')[attribute]
list_of_errors && list_of_errors.size == 0
end
end
class User < ActiveRecord::Base
validates_each :login do |record, attr, value|
record.errors.add attr, 'error message here' unless User.valid_login?(value)
end
def self.valid_login?(login)
# do validation
end
end
Просто позвоните Пользователю valid_login? (вход в систему), чтобы видеть, допустим ли сам вход в систему
Как насчет:
Пользователь columns_hash.has_key? ('вход в систему')