2016-07-12 4 views
0

Этот вопрос довольно сложно спросить, но в основном у меня есть модель класса и модель пользователя, каждая таблица классов имеет токен, и поэтому каждый пользователь один. После того, как пользователь отправит форму для регистрации, как бы установить значение класса class_id в действии create? Я пробовал <%= f.hidden_field :app_id, :value => App.find_by_token(params[:key]) %>, но это не работает. Извините за длинный и запутанный вопрос, будем рады ответить на все больше. Заранее спасибо за любые ответыПроверьте, соответствует ли значение таблицы в одной модели значению таблицы в другой модели

ответ

0

Звучит так, как будто у вас есть «отношения», когда Пользователь принадлежит классу, а класс может иметь много пользователей. Если это так, тогда вы должны использовать ассоциации релей, чтобы облегчить для себя. Это включает в себя добавление «has_many: users» к вашей модели класса и вызов «own_to: class» вашей модели пользователя. Затем вы просто использовали помощников рельсов для «сборки» объекта и сохранения его с помощью ассоциации в соответствующих контроллерах.

Ручной способ сделать это будет выглядеть следующим образом из контроллера:

def create 
    #This would involve you sending the proper class id as a hidden form field with the form field attribute named 'class_id'. You may need to add 'attr_accessor :class_id' to your User model. 
    if user.create(user_params) 
    blahblahblah 
    else 
    sorry blah blah 
    end 
end 

private 

def user_params 
    params.require(:user).permit(:name, :email, :class_id, :etc) 
end 
+1

Отлично! Спасибо за помощь, хотя вопрос ужасен: D – Zaviermiller

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