<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>oO一骑绝尘Oo</title>
    <description></description>
    <link>http://yangzhihuan.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>过度设计的胡同</title>
        <author>yangzhihuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yangzhihuan.javaeye.com">yangzhihuan</a>&nbsp;
          链接：<a href="http://yangzhihuan.javaeye.com/blog/209028" style="color:red;">http://yangzhihuan.javaeye.com/blog/209028</a>&nbsp;
          发表时间: 2008年06月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp; 一直没有静下心来把自己的一些经历写下来。今天来写一下吧。大约一个月前吧。公司的系统有个任务要做。</p>
<p>任务是这样的：把系统中用户的财富消费记录下来，包括交易的消费。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 方案是用日志文件的办法，把用户财富的消费记录到日志文件中，然后再把日志文件导入到数据库中，这样做是因为这样的操作比较频繁，如果直接写入数据库的话，数据库的压力比较大。暂且不管这种做法是否正确，先说正题。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 这种财富日志的方法在系统一直都用，只不过这次要求更多的详细信息，要对日志的内容，格式进行整理，重新设计。而且还要求和外部充值系统进行对帐，所以一下子压力就来了。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 由于要求提供对帐，和详细的交易信息。我不知怎么的就想着就在这么一条财富日志的记录中把用户交易，消费等的信息都反映在这条记录中，这样的好处是对系统现有的代码改动不会太大（其实不然，不过我当时是这样想的，现在想起来那时已经进入 了误区）。于是我就想方设法地就尽量多的信息往这条记录里面塞，比如用一个字段记录了交易涉及的ID，各个ID之间用逗号分开（这里已经是一个大大的问题了），然后这个ID串，也可能是不同类型的，那么我就再加多了一个type的字段来保存ID的类型，写到这里我都快晕了，汗一下！</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 我使尽了浑身解数，这个东东还是给我弄出来了，不过我是越看越是郁闷，感觉怎么乱七八糟的呀，不过已经走到了死胡同了，但是还没有到尽头，也不知道是死胡同，那就继续往前走吧。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 终于某天，怀疑是自己人品大爆发。正在测试这个任务的时候，看到了交易功能模块里面也有一个交易的日志，当时真是脑中灵光一闪，之后化成一个&ldquo;顶&rdquo;字（自己顶自己啊），我怎么就职责不分了呀，交易的东西，我干嘛拼死的往财富记录里面塞呀......</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 其实这本是个很简单的分模块功能的东东，不知怎么的在我手中就变成了.....唉</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; 事后总结了一下，原因也有几个的：</p>
<ol>
<li>过度设计了，职责没有分清楚（这样的后果就是代码一团糟，就算是做出来了，也容易牵一发动全身，切记呀！）</li>
<li>由于任务急，没想得太清楚就动手了，我想这也是当时一头钻进死胡同的一个原因。</li>
<li>其实当时团队中还有很多同学在的，只是任务下来都是单打独斗了。如果当时开了个小会.....沟通很重要的啊，大家的智慧才是真的智慧啊，也要切记。</li>
<li>对业务理解不够（废话）</li>
<li>人品不够好.....</li>
</ol>
          <br/>
          <span style="color:red;">
            <a href="http://yangzhihuan.javaeye.com/blog/209028#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 28 Jun 2008 23:04:59 +0800</pubDate>
        <link>http://yangzhihuan.javaeye.com/blog/209028</link>
        <guid>http://yangzhihuan.javaeye.com/blog/209028</guid>
      </item>
      <item>
        <title>[ruby]使用ssh,sftp自动上传文件的rake</title>
        <author>yangzhihuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yangzhihuan.javaeye.com">yangzhihuan</a>&nbsp;
          链接：<a href="http://yangzhihuan.javaeye.com/blog/208983" style="color:red;">http://yangzhihuan.javaeye.com/blog/208983</a>&nbsp;
          发表时间: 2008年06月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近在系统中使用jruby写业务逻辑,写完一个脚本之后,要手工地用ftp工具上传到服务器上面调试.见到大家都是ant自动部署,想起ruby下大名鼎鼎的rake,我想应该也是可以实现这样的功能的吧.参考网上使用ssh,sftp自动上传的文章,不过大都不可用,貌似是sftp的API已经变了,只好自己摸着石头过河,经过一个下午的努力(小弟是新手),终于搞定了,废话少说,上代码,我的第一个rake啊.<br />请先安装net-ssh,net-sftp这两个gem<br /><br /><pre name="code" class="Ruby">gem install net-ssh net-sftp</pre><br /><br /><pre name="code" class="Ruby">
# @anthor:yanghuan
# To change this template, choose Tools | Templates
# and open the template in the editor.
 

require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'rubygems'
require 'net/ssh'
require 'net/sftp'

LOCAL_PATH = 'lib'
REMOTE_PATH = '/home/scripts/test'

SERVER="192.168.0.1"
USER_NAME = "root"
PASSWORD = "password"

module FindUtils
  def find_all_file(file,&block)
    if File.stat(file).directory?
      Dir.foreach(file) do |f|
        find_all_file(file + "/" + f,&block) if( !(f =~ /^\./))
      end
    else
      block.call(file)
    end
  end
  
  def find_all_dir(dir,&block)
    if File.stat(dir).directory?
      block.call(dir)
      Dir.foreach(dir) do |f|
        find_all_dir(dir + "/" + f,&block) if(File.stat(dir + "/" + f).directory? && !(f =~ /^\./))
      end
    end
  end
end

task :default => [:upload]

#文件上传
task :upload do
  puts "task[upload] start"
  include FindUtils
  begin
    Net::SSH.start(SERVER,USER_NAME,:password => PASSWORD) do |ssh|
      ssh.sftp.connect do |sftp|
        #        检查并创建文件夹
        find_all_dir(LOCAL_PATH) do |d|
          if !d.eql?(LOCAL_PATH)
            begin
              local_dir = d.sub(Regexp.new(LOCAL_PATH+"/"),'')
              remote_dir = REMOTE_PATH + "/" + local_dir
              puts "local_dir:#{local_dir} remote_dir:#{remote_dir}"
              sftp.stat!(remote_dir)
            rescue Net::SFTP::StatusException => se
              raise unless se.code == 2
              puts "mkdir on remote : #{remote_dir}"
              sftp.mkdir!(remote_dir, :permissions => 0755)
              puts "mkdir completion"
            end
          end
        end
        
        #        上传文件
        find_all_file(LOCAL_PATH) do |f|
          local_file = f.sub(Regexp.new(LOCAL_PATH+"/"),'')
          remote_file = REMOTE_PATH + "/" + local_file
          sftp.upload!(f,remote_file) do|event,uploader,*args|
            case event
              # args[0] : file metadata
            when :open
              puts "start uploading.#{args[0].local} -> #{args[0].remote}#{args[0].size} bytes}"
            when :put then
              # args[0] : file metadata
              # args[1] : byte offset in remote file
              # args[2] : data being written (as string)
              puts "writing #{args[2].length} bytes to #{args[0].remote} starting at #{args[1]}"
            when :close then
              # args[0] : file metadata
              puts "finished with #{args[0].remote}"
            when :mkdir then
              # args[0] : remote path name
              puts "creating directory #{args[0]}"
            when :finish then
              puts "all done!"
            end
          end
          puts "upload success"
        end
      end
    end
  rescue => detail
    puts "error:#{detail.backtrace.join("\n")} \n message:#{detail.message}"
  end
end
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://yangzhihuan.javaeye.com/blog/208983#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 28 Jun 2008 18:12:30 +0800</pubDate>
        <link>http://yangzhihuan.javaeye.com/blog/208983</link>
        <guid>http://yangzhihuan.javaeye.com/blog/208983</guid>
      </item>
      <item>
        <title>今天发现业务领域的设计能力绝对重要</title>
        <author>yangzhihuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yangzhihuan.javaeye.com">yangzhihuan</a>&nbsp;
          链接：<a href="http://yangzhihuan.javaeye.com/blog/170657" style="color:red;">http://yangzhihuan.javaeye.com/blog/170657</a>&nbsp;
          发表时间: 2008年03月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近一直在学习ruby 和 ruby on rails .都是学习一些技术上的东西.忽略了业务领域这一方面.<br /><br />今天工作上的一些事,我负责设计来实现一个功能,一位我很尊敬的同事跟我讨论,指出了我很多不足的地方,我忽然发现:我好像忽略了深入地了解业务,了解领域建模方面的知道,在这一方面停步不前了.<br /><br />技术和业务应当是同样重要的.<br /><br />顾此失彼,惭愧啊惭愧....
          <br/>
          <span style="color:red;">
            <a href="http://yangzhihuan.javaeye.com/blog/170657#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 12 Mar 2008 22:35:21 +0800</pubDate>
        <link>http://yangzhihuan.javaeye.com/blog/170657</link>
        <guid>http://yangzhihuan.javaeye.com/blog/170657</guid>
      </item>
      <item>
        <title>一个迷失的程序员</title>
        <author>yangzhihuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yangzhihuan.javaeye.com">yangzhihuan</a>&nbsp;
          链接：<a href="http://yangzhihuan.javaeye.com/blog/170322" style="color:red;">http://yangzhihuan.javaeye.com/blog/170322</a>&nbsp;
          发表时间: 2008年03月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我还自认为是一个程序员的,虽然水平不怎么样.<br /><br />不过最近为了某些原因,我却没有对自己的程序负责任,同样是为了某些原因,我同样没有尽全力写好程序.这样做是为了保障自己的利益,只不过却违背了当初做程序员的一些基本的原则.<br /><br />唯有长叹一声....<br /><br />想起来,心里真不知道是什么滋味,乱七八糟啊...<br /><br />三年了,怎么成了这个样子呢......
          <br/>
          <span style="color:red;">
            <a href="http://yangzhihuan.javaeye.com/blog/170322#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 11 Mar 2008 23:17:59 +0800</pubDate>
        <link>http://yangzhihuan.javaeye.com/blog/170322</link>
        <guid>http://yangzhihuan.javaeye.com/blog/170322</guid>
      </item>
      <item>
        <title>关于hibernate延迟加载对象的一个问题及分析</title>
        <author>yangzhihuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yangzhihuan.javaeye.com">yangzhihuan</a>&nbsp;
          链接：<a href="http://yangzhihuan.javaeye.com/blog/168135" style="color:red;">http://yangzhihuan.javaeye.com/blog/168135</a>&nbsp;
          发表时间: 2008年03月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天有个郁闷的问题,是关于hibernate的model的equals 方法的.<br /><pre name="code" class="java">
@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
        if (getClass() != obj.getClass()) {
			return false;
		}
		Test other = (Test) obj;
		if (id == null) {
			if (other.id != null) {
				return false;
			}
		} else if (!id.equals(other.id)) {
			return false;
		}
		return true;
	}

</pre><br />Hibernate的延迟加载对象是经过cglib进行增加的．<br />以下代码会出现问题：<br /><pre name="code" class="java">
if (getClass() != obj.getClass()) {
			return false;
		}

</pre><br />getClass()的值是:com.model.Test.<br /> obj.getClass()的值则为： com.model.Test$$EnhancerByCGLIB$$3b047fc7<br />也就是说两个对象的类是不一样的,结果会返回false<br /><br />如果传入来的 obj对象是延迟加载的话，并且还没有调用过任务的get 方法，就会出现问题了,关键就在这里,<br />代码:<br /><pre name="code" class="java">
!id.equals(other.id)
</pre><br />Id的值是：100(你的返回值可能会有所不同)，但是other.id的返回值是null<br />这是因为在hibernate时面是认get方法去查数据库的，所以other.id的返回值是null（由于还没有调用过任何的get方法，hibernate没有去查数据库）
          <br/>
          <span style="color:red;">
            <a href="http://yangzhihuan.javaeye.com/blog/168135#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 05 Mar 2008 14:40:54 +0800</pubDate>
        <link>http://yangzhihuan.javaeye.com/blog/168135</link>
        <guid>http://yangzhihuan.javaeye.com/blog/168135</guid>
      </item>
      <item>
        <title>对于model是全部放在model下面,还是应该分开包来管理的疑问</title>
        <author>yangzhihuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yangzhihuan.javaeye.com">yangzhihuan</a>&nbsp;
          链接：<a href="http://yangzhihuan.javaeye.com/blog/166325" style="color:red;">http://yangzhihuan.javaeye.com/blog/166325</a>&nbsp;
          发表时间: 2008年03月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>ruby和rails的文章看了不少.不过都没有看到过讲述如何在rails下面,按模块来分类model的资料(比如像java那样用包来分类java文件,呵呵 ...我是一个java程序员).</p><p>我也试了一下把不同功能的model放在model(rails默认的)文件夹下面的子文件夹(模块,也是包),也是可以成功的,不过这样做的话,rails的约定高于配置就用不上了,因为要自己指定各个类的class.比如:</p><pre name="code" class="ruby">has_one :my_test,:class_name =&gt; 'Content::MyTest'</pre><p>&nbsp;这样.</p><p>我觉得这样比较不爽.</p><p>&nbsp;</p><p>另外,</p><pre name="code" class="ruby">include Human</pre><p> 这样的代码在model和controller里面似乎并不起它就有的作用.比如:我有一Human::User的类,在controll入er里面加</p><pre name="code" class="ruby">include Human</pre>
,再使用<pre name="code" class="ruby">User.new</pre><p>&nbsp;这样的代码就会出错,提示也就是说找不到User类云云....</p><p>&nbsp;</p><p>最后的感觉就是,rails的约定优于配置思想,确实是还来了好多方便,不过有时候未免不能随心所欲.</p><p>呵呵 ...... 也许是我强求了.</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://yangzhihuan.javaeye.com/blog/166325#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 01 Mar 2008 01:18:45 +0800</pubDate>
        <link>http://yangzhihuan.javaeye.com/blog/166325</link>
        <guid>http://yangzhihuan.javaeye.com/blog/166325</guid>
      </item>
      <item>
        <title>请问如何分模块来管理rails里面的model,问题描述请看正文</title>
        <author>yangzhihuan</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yangzhihuan.javaeye.com">yangzhihuan</a>&nbsp;
          链接：<a href="http://yangzhihuan.javaeye.com/blog/166323" style="color:red;">http://yangzhihuan.javaeye.com/blog/166323</a>&nbsp;
          发表时间: 2008年03月01日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天有一个比较郁闷的问题了,就是把model分模块来管理,比如Human::Blog,Content::MyTest,代码如下:<br /><br /><pre name="code" class="java">
blog.rb
class Human::Blog &lt; ActiveRecord::Base
  #对应日志的内容
  include Content
  set_table_name :human_blogs
  has_one :resource_entry,:as => :resource
  belongs_to :catalog
  has_one :my_test
end

my_test.rb
class Content::MyTest &lt; ActiveRecord::Base
  set_table_name :content_my_tests
  belongs_to :blog
end
</pre><br />在blog.rb使用include来引入Content,没有效果,提示信息如下:<br />uninitialized constant Human::Blog::MyTest<br />,不知道是什么原因.最后在blog.rb加上:class_name => 'Content::MyTest',可以正确使用 Content::MyTest对象,代码如下:<br /><pre name="code" class="java">
blog.rb
class Human::Blog &lt; ActiveRecord::Base
  #对应日志的内容
  set_table_name :human_blogs
  has_one :resource_entry,:as => :resource
  belongs_to :catalog
  has_one :my_test,:class_name => 'Content::MyTest'
end

my_test.rb
class Content::MyTest &lt; ActiveRecord::Base
  set_table_name :content_my_tests
  belongs_to :blog
end
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://yangzhihuan.javaeye.com/blog/166323#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 01 Mar 2008 01:02:25 +0800</pubDate>
        <link>http://yangzhihuan.javaeye.com/blog/166323</link>
        <guid>http://yangzhihuan.javaeye.com/blog/166323</guid>
      </item>
  </channel>
</rss>