如何解决此Devise身份验证挑战?

时间:2016-09-21 07:16:23

标签: ruby-on-rails devise

大家好,我在这里面临一些挑战,为用户设计验证:

我的应用程序中有两个名为color和sub_color的模型。 sub_color belongs_to颜色和颜色has_many sub_colors。我已经用适当的数据为数据库播种了

挑战;我希望用户能够在设计注册为集合对象时在设计form_for中选择这些,并且sub_color的id也将用于识别特定用户(例如我可以对所有用户进行排序的情况)蓝色(蓝色)。我该如何做到这一点?

这是我尝试过的,但它不起作用:

 %= simple_form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
                          <%= f.error_notification %>

                          <div class="form-inputs">
                            <%= f.input :email, required: true, autofocus: true %>
                            <%= f.input :user_name, required: true %>
                            <%= f.input :password, required: true, hint: ("#      {@minimum_password_length} characters minimum" if @minimum_password_length) %>
                            <%= f.input :password_confirmation, required: true %>
                            <%= f.input :first_name, required: true %>

     <%= f.label :color_id, "Color" %> <br/>
     <%= f.collection_select :color_id, Color.order(:name), :id, :name, include_blank: true%>

     <%= f.label :sub_color_id, "Sub Color" %> <br/>
     <%= f.grouped_collection_select :sub_color_id, Color.order(:name), :sub_color, :name, :id, :name, include_blank: true%>

     <div class="form-actions">
                        <%= f.button :submit, "Sign up" %>
                      </div>

model for users:
 belongs_to :sub_color
 has_one :color, through: :sub_color

 devise.......

end


model for sub_color

has_many :users
belongs_to :color

end


model for color

has_many :sub_color

end    

这是我在网络浏览器上看到的错误

NoMethodError in Devise::Registrations#new
[undefined method `color_id' for #<User:0xbacc720>]

1 个答案:

答案 0 :(得分:1)

首先,您需要将@IBAction func onDelPressed (button: UIButton!) { runningNumber = String(runningNumber.characters.dropLast()) currentLbl.text = runningNumber } color_id添加到用户表。

然后在user.rb sub_color_id和sub_color.rb belongs_to :sub_color中定义关联。与has_many :users,user.rb color和color.rb belongs_to :color相同。

希望有所帮助!