2013-04-03 5 views
1

Итак, у меня есть приложение Rails с моделью Post. Одно из полей - collection_id.Задайте значение поля вне формы в Rails

Каждое сообщение должно иметь идентификатор последней коллекции во время публикации. Если у меня есть этот идентификатор в бэкэнд, и я удаляю поле формы для collection_id, как я могу убедиться, что этот идентификатор попадает в базу данных, не имея скрытого поля в интерфейсе Rails?

Проблема со скрытым полем заключается в том, что пользователи могут использовать веб-инспектор для изменения значения. Это должно быть безопасным.

Каков наилучший способ для этого?

ответ

4

Если у вас есть идентификатор в вашем внутреннем интерфейсе, вы можете передать его в действие контроллеры перед сохранением:

@post = Post.create(params[:post]) 
    @post.controller_id = variable_holding_the_id 
    if @post.save ... 

или в некоторых случаях вы можете сделать это в модели с обратным вызовом:

after_create :set_collection_id 

    def set_collection_id 
     self.collection_id = variable_holding_the_id 
    end 
+0

Могу ли я сделать это по модели? Не лучше ли хранить большую часть вашего кода в модели? – alt

+0

вы также можете сделать обратный вызов before_save также – Zippie

+0

Какой предпочтительный метод? – alt

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