标签: strong-parameters

在非rails应用程序中使用rails 4.0 strong参数

我在葡萄api应用程序中使用active-record 4.0,但由于强参数仅适用于rails控制器,我如何在葡萄api类中允许params

strong-parameters grape-api

3
推荐指数
1
解决办法
1027
查看次数

acts_as_taggable在rails 4中具有强参数

如何在rails 4中使用具有强参数的acts_as_taggable_on gem?

有:

class User < ActiveRecord::Base
  acts_as_tagger
end

class Post < ActiveRecord::Base
  acts_as_taggable
end

@post = current_user.tag(@post, :with => :tag_list)

def post_params
  params.require(:post).permit(:text, :user_id, :tag_list)
end
Run Code Online (Sandbox Code Playgroud)

如何将(post_params)添加到@post?

ruby ruby-on-rails acts-as-taggable-on strong-parameters

3
推荐指数
1
解决办法
1147
查看次数

使用devise进行注册时ActiveModel :: ForbiddenAttributesError

我正在使用设计来注册我的用户.我正在自定义注册控制器的创建操作,但是每当我尝试创建任何新用户时,它都被拒绝,我得到上述错误.我知道我必须允许所需的参数,我这样做我不明白为什么我一直收到错误.到目前为止,贝娄是我的考验.

#user model
class User < ActiveRecord::Base
    devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable, :confirmable
    belongs_to :country
    #rest of the code
end

## Custom registeration controller
class RegistrationsController < Devise::RegistrationsController
    def create
        @user = User.new(params[:user])
        if @user.save
            sign_in(@user, bypass: true)
            redirect_to user_employee_steps_path(@user),
    notice: 'A confirmation email was sent to your email, please complete your profile
            and confirm your account to start looking for potential employees'
        else
            render 'new'
        end
    end
end

#new.html.erb the view for the registration sign up
<h2>Sign …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise strong-parameters ruby-on-rails-4

3
推荐指数
1
解决办法
3129
查看次数

rails 4和thinkbot / clearance-向用户模型添加字段

我是一个相对较新手,因此非常感谢您的协助。

我正在使用带有Clearance gem的Rails 4.2进行身份验证。我希望有人能描述覆盖控制器以在sign_up表单上包含自定义属性的最佳实践。

我已经阅读了很多建议,其中包含各种建议,其中许多来自以前版本的不使用strong_parameters的rails。

如果有人可以简要介绍我需要超越的方法(user_params / user_from_params / etc),我将不胜感激。我可以通过定义只包含@user = User.new的新“ new”方法和使用.permit的新“ user_params”方法来使事情正常运行,但是我担心在user_from_params中绕过的默认代码。

任何有关最佳实践的建议都很棒!

谢谢

clearance strong-parameters ruby-on-rails-4

3
推荐指数
1
解决办法
1021
查看次数

在Rails 4中构建一个简单的计算器表单

我希望在Rails 4应用程序中构建一组简单的计算器,我对如何设置模型和控制器感到有点失落.

在这个例子中,我有一系列计算器,它们具有非常相似但在某些情况下略有不同的输入/变量和略有不同的计算方法.

我的第一个尝试是简单地创建一个没有模型的计算器控制器,但很快就会丢失我将处理诸如形式参数和计算逻辑之类的东西.

鉴于计算器需要一些稍微不同的输入和计算方法,创建模型对我来说也没什么意义.

最后,在这种情况下,创建多个模型似乎也是一种非常混乱的方法.

所以考虑到所有这些,我想知道是否有人能告诉我如何处理这个问题的Rails方式.如果有助于获得更多信息,我希望建立与以下电子表格相同的方法:http://www.widerfunnel.com/proof/roi-calculators

任何帮助将非常感谢!

ruby activerecord ruby-on-rails strong-parameters ruby-on-rails-4

3
推荐指数
1
解决办法
5044
查看次数

如何获得强参数以允许嵌套的fields_for属性?

我有一个带有嵌套fields_for的表单.我试图允许由该嵌套表单生成的参数,但它们被强参数阻止.我使用rails 4.2.4和ruby 2.2.2

我读过一些官方文档:

我已经阅读了相关的SO帖子:

我读过各种博文:

我想我正在按照他们的意思去做,但是我的嵌套属性被强参数拒绝了.我Unpermitted parameters: __template_row__, 0, 1, 2, 3在日志中得到的东西.

这是我的代码:

车型/ enclosure.rb

class Enclosure < ActiveRecord::Base
  has_many :resident_animals, -> { order("year DESC, month DESC") }, dependent: :restrict_with_error
  validates :name, presence: true, uniqueness: {case_sensitive: false}

  accepts_nested_attributes_for :resident_animals, allow_destroy: true, reject_if: :all_blank

  def to_s
    name
   end
end
Run Code Online (Sandbox Code Playgroud)

车型/ resident_animal.rb

class ResidentAnimal < ActiveRecord::Base
  belongs_to :enclosure

  validates_presence_of :enclosure, :year, :month, :color
  ...
end
Run Code Online (Sandbox Code Playgroud)

控制器/ enclosures_controller.rb

class EnclosuresController < ApplicationController …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails strong-parameters ruby-on-rails-4

3
推荐指数
1
解决办法
2817
查看次数

为Devise改变强烈的障碍

在我的应用程序中,我最初创建了一个用户脚手架,然后我创建了一个Devise User模型,只是将属性添加到User模型,但是在我的用户控制器中,每当我尝试使参数"username"成为允许的参数时,它仍然会吐出来错误"用户名不是允许的参数".

我的user.rb

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :rememberable, :trackable, :validatable
  belongs_to :role

  def email_required?
    false
  end

  def email_changed?
    false
  end


end
Run Code Online (Sandbox Code Playgroud)

我的用户控制器

class UsersController < ApplicationController
  before_filter :authenticate_user! 
  before_action :set_user, only: [:show, :edit, :update, :destroy]

  # GET /users
  # GET /users.json
  def index
    @users = User.all
  end

  # GET /users/1
  # GET /users/1.json
  def show
  end

  # GET /users/new
  def new
    @user = User.new …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails devise strong-parameters

3
推荐指数
1
解决办法
354
查看次数

Rails params.require on empty hash

在我的一个控制器中,我有这条线:

params.require(:ad).permit(permitted_array)
Run Code Online (Sandbox Code Playgroud)

params[:ad]哈希.当此哈希中存在允许的密钥时,此行正常工作.如果params[:ad]是空哈希,则上述行失败.

示例:对于params

{"ad"=>{}, "controller"=>"ads", "action"=>"create"}
Run Code Online (Sandbox Code Playgroud)

params.require(:ad)调用后我收到此错误:

ActionController::ParameterMissing:
   param is missing or the value is empty: advertiser
Run Code Online (Sandbox Code Playgroud)

但这很好用:

[2] pry()> params
=> {"ad"=>{"name"=>"kjj", "ad_type_id"=>1, "fee"=>"9", "click_attr"=>"8", "imp_attr"=>"7"}, "controller"=>"ads", "action"=>"create"}
[3] pry()> params.require(:ad).permit(permitted_array)
=> {"name"=>"kjj", "ad_type_id"=>1, "fee"=>"9", "click_attr"=>"8", "imp_attr"=>"7"}
Run Code Online (Sandbox Code Playgroud)

如何让这一行接受空哈希?

hash ruby-on-rails strong-parameters

3
推荐指数
1
解决办法
2705
查看次数

Rails 5强参数,在复选框值内有一个数组

考虑到这些参数:

"product"=><ActionController::Parameters {"id"=>"",
"category_ids"=><ActionController::Parameters {"2"=>"1", "3"=>"1", "4"=>"1"} ,
"name"=>"...", "description"=>"a good prod", "size"=>"2x3m", "price"=>"23$", "url_video"=>"http://...", "remarks"=>"bla"} 
Run Code Online (Sandbox Code Playgroud)

我想CATH category_ids PARAMS { "2"=> "1", "3"=> "1", "4"=> "1"}用正确的permitrequiresintax,比我不知道:

执行时

params.require(:product).permit(:name, :size,..., category_ids: [] )
Run Code Online (Sandbox Code Playgroud)

结果是

Unpermitted parameters: id, category_ids
Run Code Online (Sandbox Code Playgroud)

我试过params.require(:product).permit(:category_ids[:id,:val])......和其他变种

什么是正确的sintax?

PD:这些参数是例如:

<input type="checkbox" name="product[category_ids][2]" id="product_category_ids_2" value="1">
<input type="checkbox" name="product[category_ids][3]" id="product_category_ids_3" value="1">
Run Code Online (Sandbox Code Playgroud)

为了一个has_and_belongs_to_many关系

class Product < ActiveRecord::Base
  has_many :images, dependent: :destroy
  has_and_belongs_to_many :categories, autosave: true

  attr_accessor :category_list

end

class Category < ActiveRecord::Base
  has_and_belongs_to_many :products …
Run Code Online (Sandbox Code Playgroud)

checkbox ruby-on-rails strong-parameters

3
推荐指数
1
解决办法
1991
查看次数

如何设置控制器参数的默认值?

我的数据库上有一个customers表,并且有一个名为“ last_updated_by”的列。我想在此字段中将当前用户名添加为纯文本。

我在我的应用程序上安装了devise,因此它为我提供了current_user参数。

1-
def customer_params
params.require(:customer).permit(:name, :last_updated_by=>current_user.name)
end

2-
def customer_params
  params[:last_updated_by] = current_user.name
  params.require(:customer).permit(:name, :last_updated_by)
end

3-
def customer_params
  last_updated_by = current_user.name
  params.require(:customer).permit(:name, :last_updated_by=>current_user.name)
end
Run Code Online (Sandbox Code Playgroud)

如何在控制器中设置一些默认值。

ruby ruby-on-rails strong-parameters

3
推荐指数
2
解决办法
793
查看次数