【问题标题】:Can't mass-assign protected attributes: email, password无法批量分配受保护的属性:电子邮件、密码
【发布时间】:2013-02-06 15:10:43
【问题描述】:

我知道您应该使用“attr_accessible”来允许批量分配保护,这实际上是我在我的用户模型中所做的。怎么还抱怨?

Can't mass-assign protected attributes: email, password

用户控制器:

class UsersController < ApplicationController

  def index
    @users = User.new
  end

  def show
    @user = User.find(2)
  end

  def login
    @user = Project.new(params[:user])
    ...
  end

end

用户模型:

class User < ActiveRecord::Base
  has_and_belongs_to_many :projects
  belongs_to :project
  belongs_to :ticket

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password
end

视图,_navigation.html.erb:

<%= form_for("user", :url => login_users_path, :html => { :method => :post }) do |f| %>
    <%= f.label :email%>
    <%= f.text_field(:email, :size => 30, :class => 'login_field', :placeholder => 'Användarnamn')%>
    <%= f.label :password%>
    <%= f.text_field(:password, :size => 30, :class => 'login_field', :placeholder => 'Lösenord')%>

    <%= f.submit "Logga in", :class => 'login_submit btn btn-primary' %>
<% end %>

来自 config/routes.rb:

resources :users do
  post :login, on: :collection, as: :login
end

因为我正在使用上面的集合,所以它应该(据我了解)是我正在使用的正确控件/模型(用户)?

【问题讨论】:

  • 找不到你的代码有什么问题。
  • 您知道登录方法中的@user = Project.new(params[:user]) 吗?对我来说似乎是错误的模型。
  • @reto:不,它是本地完成的。 ://
  • @holyredbeard Benedikt 发现了问题:D...类似的事情发生了;D
  • @BenediktDeicke:我为此创建了一个使用用户控制器的收集路由,所以它应该是正确的。

标签: ruby-on-rails ruby-on-rails-3 forms model mass-assignment


【解决方案1】:

我认为应该是User 而不是Project

   def login
     @user = User.new(params[:user])
     ...
   end

【讨论】:

  • 当然。我想是时候休息一下了 ;-) 感谢您发现这个小问题。
【解决方案2】:

您还应该将索引操作更改为:

def index
  @users = Users.all
end

并显示操作:

def show
  @user = User.find(params[:id])
end

【讨论】:

    猜你喜欢
    • 2013-05-07
    • 1970-01-01
    • 2011-09-04
    • 1970-01-01
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多