Rails模型中的自定义方法无法实现

时间:2013-08-07 17:25:58

标签: ruby-on-rails ruby-on-rails-4 rails-models

当我尝试:

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”列上设置了一系列Serialized Hash数据。方法存储执行此操作并设置属性acessors。我已经删除了此代码的其他部分,这些部分并不是问题所固有的,但基本上,我需要通过方法通知accesors属性,而不是直接在那里声明。原因是因为我将重用生成列的方法。

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

2 个答案:

答案 0 :(得分:1)

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

在控制器中:

@construction=Construction.first

@construction.columns // will return that array;

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

mmm我仍然无法理解这个问题,但也许你应该做一个after create方法,如下所示:

class Construction < ActiveRecord::Base
  after_create :something

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

  private
  def something
      store :dados, accessors: self.columns
  end
end

答案 1 :(得分:0)

确定。我解决了它添加自我。之前,将列更改为不同的关键字导致其使用rails方法,并且只有在重新启动服务器后才能执行操作。谢谢大家!