标签: attr-accessible

更新模型属性

我有一个Rails应用程序是一个博客平台,允许多个贡献作者.我的用户模型有一个:writer布尔属性,用于分配写入权限.然而,:作家是不是下面列出attr_accessible用户模型.

我想通过网络编辑这个属性,而不必运行

User.find_by_id(user_id).update_attribute(:writer, true/false)
Run Code Online (Sandbox Code Playgroud)

通过控制台,但我不知道这是否会不列是不可能的:作家attr_accessible用户模型.我有几个页面只能访问管理员用户,我希望能够在这些视图中切换:writer属性.

如果确实有可能,怎么办呢?在此先感谢您的帮助!

编辑:基于我得到的几个答案,我觉得应该在我的问题中更具体.我道歉.据我所知,我仍然可以单独更新:writer属性,正如Beerlington和Hitesh指出的那样.我想知道的是如何通过视图实现这样的功能.是否可以创建一个可点击的链接来切换:writer状态?或许才有可能有一个链接调用一个控制器功能,并通过适当的user_id:作家切换?

ruby-on-rails attr-accessible

6
推荐指数
1
解决办法
1万
查看次数

设计不使用Rails 4.0rc1

有没有办法让Devise与Rails 4.0rc1一起使用?尝试启动rails服务器甚至生成Devise视图时出现以下错误:

/Users/scott/.rvm/gems/ruby-2.0.0-p195@rails/gems/activemodel-4.0.0.rc1/lib/active_model/deprecated_mass_assignment_security.rb:14:in `attr_accessible':
`attr_accessible` is extracted out of Rails into a gem. Please use new recommended protection model for params(strong_parameters) or add `protected_attributes` to your Gemfile to use old one. (RuntimeError)
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails attr-accessible devise activemodel ruby-on-rails-4

5
推荐指数
1
解决办法
2834
查看次数

Rails 4下的Devise 3中的自定义用户字段

我正在使用Devise 3的候选版本,以便我可以将它与Rails 4一起使用.在Rails 3.2中我曾经能够User通过简单地将该字段添加到registration/edit.html.erb 来为我的模型添加自定义字段和registration/new.html.erb文件(运行正确的迁移后).然后我只是将该字段添加到attr_accessible模型中的字段列表中.

但是,在Rails 4中,没有attr_accessible列表,我不能简单地在视图中添加字段.如何添加自定义用户字段?

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

5
推荐指数
2
解决办法
5521
查看次数

请使用新建议的params保护模型(strong_parameters)或将`protected_attributes`添加到gemfile中

当我向我的Relationship模型添加attr_accessible时发生了这种情况.

class Relationship < ActiveRecord::Base
  attr_accessible :followed_id
end
Run Code Online (Sandbox Code Playgroud)

不使用Devise或protected_attributes gem,这有什么办法?我知道在控制器中你调用一个需要和允许字段的私有方法.这也是你应该在模型中做的事吗?这里的约定是什么?

谢谢!

ruby-on-rails whitelist mass-assignment attr-accessible devise

5
推荐指数
1
解决办法
4930
查看次数

如何正确地将值数组传递给`attr_accessible`方法?

我正在使用Ruby on Rails v3.2.2并且我想处理一个符号数组,以便将其值传递给attr_accessible方法以及它应该被创建.也就是说,我有:

attr_array = [:one, :two, ...]
Run Code Online (Sandbox Code Playgroud)

如果我使用:

attr_accessible attr_array
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

self.accessible_attributes.inspect
# => #<ActiveModel::MassAssignmentSecurity::WhiteList: {"[:one, :two, ..."]}>
Run Code Online (Sandbox Code Playgroud)

但是,我想得到:

# => #<ActiveModel::MassAssignmentSecurity::WhiteList: {"one", "two", "..."}>
Run Code Online (Sandbox Code Playgroud)

以及应该做的.

我该怎么做?

ruby arrays ruby-on-rails attr-accessible ruby-on-rails-3

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

mongoid,set_table_name和attr_accessible

我正在使用rails3 edge和mongoid 2beta6和ruby 1.9.2-head.

如何手动更改表名,就像ActiveRecord的set_table_name一样?例如,我的模型注册应该使用表"users"进行存储,而不是"注册".

另一个问题是如何实现AR提供的attr_accessible bevahior?

谢谢,科林

ruby-on-rails tablename attr-accessible mongoid ruby-on-rails-3

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

使用'protected attributes'gem时,Rails NoMethodError(未定义的方法`id'...)

我正在使用Rails中的'protected_attributes'gem,它将Rails明确attr_accessible地带回到Rails 4(我需要与另一个Gem兼容,长篇故事).

在编写代码的过程中,我尝试访问未命名为access的属性.我收到以下错误:

NoMethodError (undefined method `id' for #<ActiveRecord::Relation::ActiveRecord_Relation_User:0x00000104c51c00>):
Run Code Online (Sandbox Code Playgroud)

实现我的错误,我添加:id了我的attr_accessible列表的其余部分.但是,即使重新启动rails服务器,每次运行代码时仍然会得到相同的错误.这件事发生在我之前,我所做的是rake db:reset无论出于什么原因修复了我的问题(但是在这个过程中我的数据库已经完成了).我宁愿不再擦除我的数据库...有没有更简单的方法来解决这个问题?有些缓存我不清算什么?谢谢.

编辑:对于那些感兴趣的人,这是完整的痕迹:

activerecord (4.0.0) lib/active_record/relation/delegation.rb:121:in `method_missing&#39;
activerecord (4.0.0) lib/active_record/relation/delegation.rb:68:in `method_missing&#39;
app/controllers/api/v1/superusers.rb:17:in `block (2 levels) in &lt;class:Users&gt;&#39;
grape (0.7.0) lib/grape/endpoint.rb:31:in `call&#39;
grape (0.7.0) lib/grape/endpoint.rb:31:in `block in generate_api_method&#39;
grape (0.7.0) lib/grape/endpoint.rb:407:in `call&#39;
grape (0.7.0) lib/grape/endpoint.rb:407:in `run&#39;
grape (0.7.0) lib/grape/endpoint.rb:156:in `block in call!&#39;
grape (0.7.0) lib/grape/middleware/base.rb:24:in `call&#39;
grape (0.7.0) lib/grape/middleware/base.rb:24:in `call!&#39;
grape (0.7.0) lib/grape/middleware/base.rb:18:in `call&#39;
grape (0.7.0) lib/grape/middleware/base.rb:24:in `call!&#39;
grape (0.7.0) lib/grape/middleware/base.rb:18:in `call&#39;
grape (0.7.0) …
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails attr-accessible

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

如何在Rails 4中为属性哈希添加虚拟属性

我想将一个虚拟属性添加到activerecord对象.定义getter/setter很简单,但我希望我的属性出现在属性hash(和attribute_names等)中.由于这是rails 4我不能使用attr_accessible.

我还需要添加到此代码中,以便我可以调用reference.attributes并让作者的值显示在那里?

class Reference < ActiveRecord::Base

  def authors
    self.author_names.to_a.join(' and ')
  end

  def authors=(val)
    self.author_names.destroy
    val.strip.split(/(?:[ ]and[ ])|\;/).each {|entry|
     self.author_names << AuthorName.new(name: entry)
    }
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby activerecord ruby-on-rails attr-accessible

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