当我尝试:
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属性,而不是直接在那里声明。原因是因为我将重用生成列的方法。
我不会在实例变量中使用该方法,而是在模型本身内部。它的代码重用
答案 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方法,并且只有在重新启动服务器后才能执行操作。谢谢大家!