问题标签 [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.

0 投票
1 回答
225 浏览

ruby-on-rails - 这是由 attr_accessible 引起的吗?

我最近刚刚用attr_accessible字段更新了我的模型,突然有些测试无法正常工作,正如我所料。但是,我有一个规范,例如:

这条线@user.inventory.should == 1只是我现在做的检查。库存是nil出于某种原因。是不是因为<<手术造成的?由于 User 模型的 inventory_id 属性,我猜这是最有可能的。

我不得不说这attr_accessible通常对我来说似乎是一种黑客行为,我有点不喜欢它,尽管我明白为什么应该使用它。你认为是这样吗?如果是这样,我怎样才能避开那张支票?

0 投票
2 回答
14843 浏览

ruby-on-rails - 更新模型属性

我有一个 Rails 应用程序,它是一个博客平台,允许多个投稿作者。我的用户模型有一个:writer布尔属性,用于分配写入权限。但是,:writer未在用户模型的attr_accessible 下列出。

我想要一种通过网络编辑此属性的方法,而无需运行

通过控制台,但我想知道如果没有在用户模型的attr_accessible 下列出:writer ,这是否是不可能的。我有几个页面仅供管理员用户访问,我希望能够在这些视图中切换:writer属性。

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

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

0 投票
1 回答
169 浏览

ruby-on-rails - 切换非 attr_accessible 变量

我正在创建一个 Rails 应用程序,它是一个博客平台,有许多撰稿人。我的用户模型有一个:writer布尔属性来指示特定用户是否有权发布文章。为了防止批量分配,:writer属性未用户模型attr_accessible下列出。相反,我想创建一个类似于以下的函数,以允许切换作者权限:

不过,我对这种方法有几个问题:

  1. 我将如何从视图中调用它?有没有办法通过link_tobutton_for调用函数?
  2. 我会把这样的功能放在哪里?在控制器或助手中?
  3. 我需要编辑config/routes.rb文件中的任何路由吗?

在此先感谢您的帮助!

0 投票
2 回答
1250 浏览

ruby-on-rails - 使用 rails 的 attr_accessible/security 问题 - 处理这个问题的最佳方法是什么?

我有一个关于 Rails 安全性的问题。假设我们有User模型,它有许多用于角色的布尔值,例如admindirector等。

管理员肯定会想要在表单上编辑这些值,所以我们希望使用attr_accessible让管理员用户执行此操作。

当然,其他用户也可以编辑他们的用户模型——或者编辑他们的个人资料,或者当他们自己邀请/添加新用户到系统时。在导演的情况下,我们实际上希望他们设置比导演“次要”的角色,但我们不希望他能够设置directoradmin

由于我们暴露了这些修改用户的控制器,在这种情况下attr_accessible不允许设置director和设置吗?admin这听起来像是一个非常大的安全漏洞。

那么限制访问的最佳方法是什么?

  1. 设置每个参数,一次一个?

  2. 设置admin = falsedirector = false创建/更新操作?最简单的解决方案,但在控制器中有这个有点讨厌。

  3. 使用 if 语句查看该用户角色是否可以编辑这些属性并允许它?

  4. 使用 rails 回调?,例如before_validationor before_save

  5. 其他一些声明性解决方案?

谢谢

0 投票
2 回答
3714 浏览

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 进行了测试。

0 投票
2 回答
1213 浏览

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 中是固定的。详情见下文

0 投票
2 回答
555 浏览

ruby-on-rails - 'attr_accessible' 效果

我正在使用 Ruby on Rails 3.0.9,我想知道该方法在哪些情况下(即对于哪些方法)attr_accessible有效。例如,如果我使用

当您使用语句的new(...)方法时,它会注意不分配这些属性值。User.new(params[:user])

但是它会采取什么其他方法呢? 我可以正确运行,例如,方法where(...)是否exists?(...)attr_accessible生效?

0 投票
1 回答
1136 浏览

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”。希望这可以帮助。我确定其他人一定有这个问题。

0 投票
1 回答
2673 浏览

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分配属性。

我可以手动赋值,但我认为这不是一个完美的解决方案。

0 投票
3 回答
5938 浏览

ruby-on-rails - 使用 Rails 3.1 :as => :admin 更新受 attr_accessible 保护的属性

在阅读了 Rails 3.1 API 中的 attr_accessible之后,我看到那里有一个 as:admin选项。我想知道两件事。

  1. 如果用户有管理员标志,我的控制器如何告诉我的模型用户是管理员。

  2. 如果用户是所有者,我可以:as => owner在我的模型中指定,并且我的控制器如何再次通知我的模型他们是项目的所有者。