【问题标题】:Custom methods unacessible in Rails ModelRails 模型中无法访问的自定义方法
【发布时间】:2013-08-07 17:25:57
【问题描述】:

当我尝试:

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

我明白了:

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

那么,我该怎么做呢?

PS:我试过把'self。'在列之前,它不起作用。

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

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

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

【问题讨论】:

  • 您想从模型内部调用列吗?
  • 你能举个例子吗?
  • 我进行了编辑以添加更多信息。我不会在实例变量中使用该方法,而是在模型本身中使用。它用于代码重用

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


【解决方案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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多