set_table_name仅在控制台中工作,而不是在启动rails服务器时

时间:2012-07-10 15:52:49

标签: ruby-on-rails activerecord

更新: 我在Template :: Section:

中有这个方法
  def first_content()
    return contents.first;
  end

在控制台中运行... Template::Section.find(id).first_content返回一个值..   但是每当服务器运行时,当使用完全相同的ID调用完全相同的方法时,我会得到下面描述的错误...这是用户/控制器交互的结果....

ORIGINAL:

使用rails 2.3.14

我只是在脚本/服务器和脚本/控制台

中执行此操作
<Template::Section Object>.template_contents

在脚本/服务器中,它实际上返回关联的template_contents,但在服务器上,我收到此错误:

Mysql2::Error: Unknown column 'contents.template_section_id' in 'where clause': SELECT * FROM `contents` WHERE (`contents`.template_section_id = 10)  ORDER BY sequence

它看错了桌子!

以下是我对这两个模型的模型设置:

class Template::Section < ActiveRecord::Base
  set_table_name "template_sections"

  has_many :template_contents,
           :order => 'sequence',
           :dependent => :destroy,
           :class_name => "Template::Content",
           :foreign_key => "template_section_id"

class Template::Content < ActiveRecord::Base
  set_table_name "template_contents"

  belongs_to :template_section,
             :class_name => "Template::Section",
             :foreign_key => "template_section_id"

这应该可行,对吗?为什么脚本/服务器无法识别两个类的set_table_name?

我应该提一下,我为内容创建了一个别名:

 def contents(version = nil)
    return self.template_contents
  end

0 个答案:

没有答案