问题标签 [attr-accessible]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 这是由 attr_accessible 引起的吗?
我最近刚刚用attr_accessible
字段更新了我的模型,突然有些测试无法正常工作,正如我所料。但是,我有一个规范,例如:
这条线@user.inventory.should == 1
只是我现在做的检查。库存是nil
出于某种原因。是不是因为<<
手术造成的?由于 User 模型的 inventory_id 属性,我猜这是最有可能的。
我不得不说这attr_accessible
通常对我来说似乎是一种黑客行为,我有点不喜欢它,尽管我明白为什么应该使用它。你认为是这样吗?如果是这样,我怎样才能避开那张支票?
ruby-on-rails - 更新模型属性
我有一个 Rails 应用程序,它是一个博客平台,允许多个投稿作者。我的用户模型有一个:writer布尔属性,用于分配写入权限。但是,:writer未在用户模型的attr_accessible 下列出。
我想要一种通过网络编辑此属性的方法,而无需运行
通过控制台,但我想知道如果没有在用户模型的attr_accessible 下列出:writer ,这是否是不可能的。我有几个页面仅供管理员用户访问,我希望能够在这些视图中切换:writer属性。
如果确实有可能,怎么可能做到?在此先感谢您的帮助!
编辑:根据我得到的几个答案,我觉得我的问题应该更具体。我道歉。我知道我仍然可以单独更新:writer属性,正如 Beerlington 和 Hitesh 所指出的那样。我想知道的是如何通过视图实现这样的功能。是否可以制作一个可点击的链接来切换 :writer 状态?是否有可能让链接调用控制器函数并为:writer切换传递适当的user_id ?
ruby-on-rails - 切换非 attr_accessible 变量
我正在创建一个 Rails 应用程序,它是一个博客平台,有许多撰稿人。我的用户模型有一个:writer布尔属性来指示特定用户是否有权发布文章。为了防止批量分配,:writer属性未在用户模型的attr_accessible下列出。相反,我想创建一个类似于以下的函数,以允许切换作者权限:
不过,我对这种方法有几个问题:
- 我将如何从视图中调用它?有没有办法通过link_to或button_for调用函数?
- 我会把这样的功能放在哪里?在控制器或助手中?
- 我需要编辑config/routes.rb文件中的任何路由吗?
在此先感谢您的帮助!
ruby-on-rails - 使用 rails 的 attr_accessible/security 问题 - 处理这个问题的最佳方法是什么?
我有一个关于 Rails 安全性的问题。假设我们有User
模型,它有许多用于角色的布尔值,例如admin
、director
等。
管理员肯定会想要在表单上编辑这些值,所以我们希望使用attr_accessible
让管理员用户执行此操作。
当然,其他用户也可以编辑他们的用户模型——或者编辑他们的个人资料,或者当他们自己邀请/添加新用户到系统时。在导演的情况下,我们实际上希望他们设置比导演“次要”的角色,但我们不希望他能够设置director
或admin
由于我们暴露了这些修改用户的控制器,在这种情况下attr_accessible
不允许设置director
和设置吗?admin
这听起来像是一个非常大的安全漏洞。
那么限制访问的最佳方法是什么?
设置每个参数,一次一个?
设置
admin = false
和director = false
创建/更新操作?最简单的解决方案,但在控制器中有这个有点讨厌。使用 if 语句查看该用户角色是否可以编辑这些属性并允许它?
使用 rails 回调?,例如
before_validation
orbefore_save
?其他一些声明性解决方案?
谢谢
ruby-on-rails-3 - 在具有 has_many 的连接模型中使用 attr_accessible :through 关系
我有一个创建公司并在此过程中成为员工的用户。employees 表有一个:user_id
和一个:company_id
。
很基本。但事情是这样的,资源 EMPLOYEE 除了外键之外还有其他属性,比如 boolean :active
。我想使用attr_accessible
,但这会导致一些问题。该属性:user_id
设置正确,但:company_id
为零。
所以我的问题是:如果:user_id
设置正确,尽管它不是attr_accessible
,为什么:company_id
不设置正确呢?它不应该是一个attr_accessible
.
我正在使用 Rails 3.0.8,并且还使用 3.0.7 进行了测试。
ruby-on-rails - 在 Rails 3 中使用 Devise 和 attr_accessible 的 Respond_with
我正在使用 Rails 3 构建一个 API,使用设计来处理一些身份验证。
我通常使用 respond_with 方法为各种资源返回 xml/json。
例如 GET /groups.xml 将路由到
这在我的网站上适用于各种资源,并返回格式良好的 json 或 xml,其中包含每个组的所有属性。
但是,当我调用 GET /users.xml 时,它只响应每个用户属性的有限子集。事实证明,这里只会返回 attr_assessible 中定义的属性 - 我怀疑这是设计的“功能”,因为任何其他模型都不是这种情况。
任何人都可以启发我吗?
编辑:这在 Devise 1.4.2 中是固定的。详情见下文
ruby-on-rails - 'attr_accessible' 效果
我正在使用 Ruby on Rails 3.0.9,我想知道该方法在哪些情况下(即对于哪些方法)attr_accessible
有效。例如,如果我使用
当您使用语句的new(...)
方法时,它会注意不分配这些属性值。User.new(params[:user])
但是它会采取什么其他方法呢? 我可以正确运行,例如,方法where(...)
是否exists?(...)
会attr_accessible
生效?
ruby-on-rails - Rails 3.1 attr_accessible 验证接收角色数组
我想使用 rails 新的动态 attr_accessible 功能。但是,我的每个用户都有许多角色(我正在使用声明式授权)。所以我的模型中有以下内容:
我在我的控制器中传递了这个:
user_roles 是一个符号数组:
我希望我的模型检查数组中的一个符号是否与声明的 attr_accessible 匹配。因此,我避免任何重复。
例如,假设 user_roles =[:admin, :employee]。这有效:
但是如果我只能验证一个角色或符号,因为我的所有用户都有很多角色,那么它是没有用的。
任何帮助将不胜感激
** * ** * ** * ** * ***更新* ** * ** * ** * ** * ** * ** * ** * **
您可以在此处下载示例应用程序: https ://github.com/jalagrange/roles_test_app
此应用程序中有 2 个示例: y 无法更新任何属性的学生,尽管事实上 'user_roles = [:admin, :student]'; 而我只能更改名字的人,因为我在控制器更新操作中使用“user_roles.first”。希望这可以帮助。我确定其他人一定有这个问题。
ruby-on-rails - Rails attr_accessible :as 和自定义验证器
我有模型用户
以及用于前端和后端的两个单独的用户控制器。第一个非常微不足道,效果很好,第二个在下面
我正在使用自定义验证器来检查用户的电子邮件域是否受到限制
更新操作效果很好,但创建操作You have a nil object when you didn't expect it!
在config/initializers/restricted_email_domain_validator.rb:3:in 'validate_each'
. 没有:as => :super_admin
一切都可以,但是当然role_ids
没有active
分配属性。
我可以手动赋值,但我认为这不是一个完美的解决方案。
ruby-on-rails - 使用 Rails 3.1 :as => :admin 更新受 attr_accessible 保护的属性
在阅读了 Rails 3.1 API 中的 attr_accessible之后,我看到那里有一个 as:admin
选项。我想知道两件事。
如果用户有管理员标志,我的控制器如何告诉我的模型用户是管理员。
如果用户是所有者,我可以
:as => owner
在我的模型中指定,并且我的控制器如何再次通知我的模型他们是项目的所有者。