【问题标题】:Mass assign for attr_accessible :association_attributes in special cases特殊情况下 attr_accessible :association_attributes 的质量分配
【发布时间】:2009-07-16 18:31:33
【问题描述】:

在用户模型中,我有两个 accept_nested_attributes_for: :details (即 has_one 关联)和 :membership_orders (has_many)。

对于:详细信息我有:

attr_accessible :details_attributes

但是对于membership_orders,我不能有这么简单的访问器,因为我想保护它不受普通用户的影响,但要让管理员可以访问它。

可以使用属性权限插件 (github.com/Fingertips/attribute-permissions/tree/master),但我认为这不是最好的解决方案。

你能告诉我如何为 attr_accessible 添加特殊表达式,或者使用 before_validation(或其他)过滤掉这些属性。

您可以通过以下链接了解此问题:blog.smartlogicsolutions.com/2009/02/24/rails-23-nested-object-forms-im-not-crazy-about-them/

谢谢。

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

您当然可以在验证之前将它们过滤掉。另一种选择是切换到 attr_protected 并指定要保护的字段而不是要打开的字段。这可能是一个简单的转换,也可能是一个更复杂的转换,具体取决于模型的大小。

【讨论】:

  • before_validation 实现:attr_accessor :allowed_membership_orders_associations def filter_allowed_membership_orders_associations self.membership_orders.delete_if { |mo|莫变了? && !@allowed_membership_orders_associations } end 使用 attr_protected 不好,因为:railspikes.com/2008/9/22/…
猜你喜欢
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 2020-12-29
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
相关资源
最近更新 更多