2014-03-04 3 views
0

Я создаю простой блог/новостной сайт без системы аутентификации пользователей. Я решил использовать простой способ проверки секретного ключа, чтобы посетители, которые знают ключ для создания сообщений.Рельсы, запрашивающие секретный ключ для создания модели

Короче говоря, для публикации вам необходимо предоставить ключ. В противном случае объект не должен быть сохранен в db.

Вот мой код.

class Post < ActiveRecord::Base 

    attr_accessor :slaptazodis 

    validate :passcheck 
    validates :title, presence: true 
    validates :body, presence: true 

    def passcheck 

    if :slaptazodis != "1234" 
     errors.add(:base, 'Invalid pass') 
    end 
    end 
end 

Итак, я создаю новую модель в песочнице с заголовком, телом и атрибут slaptazodis установлен в 1234. Тем не менее, когда я проверяю ошибки, консоль продолжает показывать мне «Invalid прохода». Что я делаю не так? Это о атрибутах или чем-то еще? Заранее благодарю вас!

ответ

1

Вы должны рассмотреть вопрос о том, чтобы отложить эту логику от модели сообщения и перенести ее на контроллер.

В контроллере вы можете проверить параметры, отправленные пользователем, например.

if params[:slaptazodis] != "1234" 

Однако, если вы изучаете рельсы и просто хотите, чтобы сделать его работу с существующим решением, изменение от:

if :slaptazodis != "1234" 

к:

if slaptazodis != "1234" 

Команда ":" сообщает Rails, что он должен учитывать символы, следующие за символом (почти так же, как строка) только для уточнения, поэтому ваш код почти же, как говорят:

if "slaptazodis" != "1234" 

Что, конечно, всегда оказывает верно.

+0

Могу ли я спросить вас, почему это мне не нужно использовать: перед переменной? Дело в том, что я, я, я бы не сказал, что он есть, но какой-то парень сказал мне, что должен. Я все еще не совсем понимаю. –

+0

@LukasValatka Загляните в это объяснение: https://www.ruby-forum.com/topic/194870 и вернитесь, если вы не понимаете :-) – gernberg

+1

Большое спасибо! :) –

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