小编v_n*_*mad的帖子

Common Lisp对象系统(CLOS)是否支持鸭子打字?

我正在阅读"Practical Common Lisp",我想知道Common Lisp是否支持像Duck这样的Duck-Typing?

在Ruby中,只要它实现一个带有调用者假定的名称和参数列表的方法,就可以在一个对象上调用一个方法,而不管它是什么类.

CLOS怎么样?是否可以在不考虑类的情况下调用对象,只需假设泛型函数可以处理它.也许不需要使用duck-typing,因为CLOS不遵循消息传递哲学,并且方法没有绑定到类.

lisp common-lisp

4
推荐指数
1
解决办法
495
查看次数

如何从ActiveRecord中名为"object_id"的列中检索值?

我需要通过ActiveRecord访问遗留关系数据库,该数据库使用名为"object_id"的列作为表中的主键.大多数工作都有效,但是当我尝试为关联指定自定义SQL查询(见下文)ActiveRecord时,Ruby解释器总是检索Ruby基础"Object"的object_id而不是数据库中的列值.

我在has_many声明中定义了以下SQL查询:

:finder_sql =>"SELECT*FROM t_object WHERE object_id IN(SELECT end_object_id FROM t_object,t_connector WHERE t_object.object_id =#{object_id} AND start_object_id =#{object_id})

我已经尝试通过使用别名来解决它:

alias_attribute:my_oid,:object_id

并在SQL查询中使用"my_oid".但是我收到以下错误消息:

NameError:未定义的局部变量或EaTObject的方法`my_oid'(表不存在):Class

我还定义了一个方法,它返回read_attribute("object_id")的值,并将方法名称放入SQL查询而不是"object_id",但是当加载类时,我得到的错误消息是该方法名称不是列名在数据库表中.

有没有解决方案来访问名为"object_id"的列?

ruby activerecord ruby-on-rails

2
推荐指数
1
解决办法
1279
查看次数

标签 统计

activerecord ×1

common-lisp ×1

lisp ×1

ruby ×1

ruby-on-rails ×1