0

当我尝试:

class Construction < ActiveRecord::Base
  def columns
    ["a", "b"]
  end   
  store :dados, accessors: columns
end

我得到:

undefined local variable or method `columns' for #<Class:0x007f891037dac0>

那么,我该怎么做呢?

PS:我试过把“自我”。在列之前,它没有工作。

编辑-有关该问题的更多信息:

我已经设置了一系列存储在“dados”列上的序列化哈希数据。方法 store 执行此操作并设置属性访问器。我已经删除了该代码中并非问题所固有的其他部分,但基本上,我需要通过一种方法通知访问器属性,而不是直接在那里声明。原因是因为我将重用生成列的方法。

我不会在实例变量中使用该方法,而是在模型本身中使用。它用于代码重用

4

2 回答 2

1

当您在模型上创建方法时,该模型的每个实例都有其方法,例如,如果您这样做:

在控制器中:

@construction=Construction.first

@construction.columns // will return that array;

你能给我更多关于你需要做什么的信息,以便我可以更好地帮助你

嗯,我仍然无法理解这个问题,但也许你应该做一个 after create 方法,像这样:

class Construction < ActiveRecord::Base
  after_create :something

  def columns
    ["a", "b"]
  end   

  private
  def something
      store :dados, accessors: self.columns
  end
end
于 2013-08-07T17:32:16.760 回答
0

好的。我解决了它添加自我。之前,将列更改为不同的关键字,因为它是一个 rails 方法,并且只有在重新启动服务器后才能工作。感谢大家!

于 2013-08-07T17:57:09.233 回答