【问题标题】:Can I change the assignment order for new model instances in rails我可以更改rails中新模型实例的分配顺序吗
【发布时间】:2009-09-13 10:55:01
【问题描述】:

我有两个属性,“a_value”和“b_id”。 (不是他们的真实姓名。)“a_value”存储在文件系统中,使用模型“B”中的一些信息,由“b_id”引用。

所以,我的 params 对象看起来像:

params[:foo] = {"a_value"=>"nifty value","b_id"=>"38"}

例如。

现在,在 foo_controller.rb 中:

foo = Foo.new(params[:foo])

但这失败了。

ActiveRecord::RecordNotFound: 找不到没有 ID 的 Foo

在 Foo.a_value=(value) 我有

...
self.my_path = self.b_id.the_path
...

看起来 Rails 正在按字母顺序执行分配,并且当 b_id 不存在时会出现恐慌,即使它存在于 params 哈希中并通过了验证。

我可以强制执行此作业的顺序吗?或者我可以创建一个 before_filter 来在剩余的质量分配发生之前执行 b_id 分配吗?

【问题讨论】:

    标签: ruby-on-rails params alphabetical mass-assignment


    【解决方案1】:

    我想通了!

    方法如下:

    foo = Foo.new
    foo[:b_id] = params[:foo][:b_id]
    foo.update_attributes(params[:foo])
    if foo.save...
    

    你必须确保你的验证是有序的,但它是有效的。

    如果您可以为属性指定部分排序而不必重命名它们,那就更好了。

    【讨论】:

      猜你喜欢
      • 2019-05-17
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 2022-07-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 2015-04-18
      相关资源
      最近更新 更多