小编pra*_*ase的帖子

ActiveModel :: ForbiddenAttributesError + cancan + rails 4 +带有作用域控制器的模型

我使用cancan(1.6.10)和rails 4.0.0.我有一个名为'App'(没有作用域)的模型和一个控制器Admin :: AppsController(它的作用域.即app/controllers/admin/apps_controller).

控制器代码为

class Admin::AppsController < ApplicationController
  before_filter :authenticate_user!
  load_and_authorize_resource class: App

  def index
  end

  #CRUD methods and some other custom methods
  ...

  private

  def app_params
    params.require(:app).permit(:name, :description, :author, :url_path, :validated, :active, :version)
  end
end
Run Code Online (Sandbox Code Playgroud)

我尝试创建"应用"时遇到错误.

ActiveModel::ForbiddenAttributesError - ActiveModel::ForbiddenAttributesError:
activemodel (4.0.0) lib/active_model/forbidden_attributes_protection.rb:21:in `sanitize_for_mass_assignment'
Run Code Online (Sandbox Code Playgroud)

我补充道

before_filter do
  resource = controller_path.singularize.gsub('/', '_').to_sym
  method = "#{resource}_params"
  params[resource] &&= send(method) if respond_to?(method, true)
end
Run Code Online (Sandbox Code Playgroud)

https://github.com/ryanb/cancan/issues/835#issuecomment-18663815中所述,但仍然出现上述错误.

activemodel cancan ruby-on-rails-4

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

您的Ruby版本是1.9.3,但您的Gemfile指定为2.1.0

我跑的时候

rails server
Run Code Online (Sandbox Code Playgroud)

我收到了错误.

加载gemsets有一些问题

$rvm list
rvm rubies
ruby-1.9.3-p484 [ i686 ]
ruby-2.0.0-p353 [ i686 ]
=* ruby-2.1.0 [ i686 ]
# => - current
# =* - current && default
#  * - default

$ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [i686-linux]

$rails -v
Your Ruby version is 1.9.3, but your Gemfile specified 2.1.0

$bundle show rails
/home/prasad/.rvm/gems/ruby-2.1.0/gems/rails-4.0.1

$bundle exec rails s
Your Ruby version is 1.9.3, but your Gemfile specified 2.1.0

bundle exec ruby -v
ruby 2.1.0p0 …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rvm

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

在Ruby中扩展模块时内部会发生什么?

Foo = Module.new

class MyClass
  include Foo
end
Run Code Online (Sandbox Code Playgroud)

当一个模块包含在一个类中时,会创建一个匿名代理类并将其设置为MyClass的超类.

MyClass.ancestors => [MyClass, Foo, ...]
Run Code Online (Sandbox Code Playgroud)

但是模块扩展后内部会发生什么?Ruby如何处理这个问题?

ruby

2
推荐指数
1
解决办法
327
查看次数

如何在发动机厂启动sidekiq

我正在将一个rails3应用程序从heroku转移到引擎码.我想知道如何在每个部署的引擎码上启动(或重新启动)sidekiq?要检查sidekiq是否正常工作,我ssh到EY实例并手动启动sidekiq.我希望从EY部署脚本(config/deploy.yml)处理此过程.我习惯于mina部署和EC2.

deployment engineyard ruby-on-rails-3 sidekiq

0
推荐指数
1
解决办法
1239
查看次数