检查一个模型中的表值是否与另一个模型中的表值匹配

时间:2016-07-12 14:17:18

标签: ruby-on-rails devise

这个问题很难提出,但基本上,我有一个Class模型和一个User模型,每个Class表都有一个令牌,每个用户都有一个令牌。用户提交注册表单后,如何在创建操作中设置用户class_id的值?我试过<%= f.hidden_field :app_id, :value => App.find_by_token(params[:key]) %>,但这不起作用。对不起那个漫长而令人困惑的问题,很乐意回答更多。提前感谢您的任何答案

1 个答案:

答案 0 :(得分:0)

听起来好像你有一个“关系”,其中一个用户属于一个类,一个类可能有很多用户。如果是这种情况,那么您应该使用rails Associations来让自己轻松。这将涉及向您的Class模型添加'has_many:users',并为您的User模型添加'belongs_to:class'调用。然后,您只需使用rails帮助程序“构建”对象,并将其与关联控制器中的关联一起保存。

从您的控制器手动执行此操作的方法如下:

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
相关问题