在db中没有相应列的rails模型属性

我有一些不需要任何持久性的rails模型,但我想rails认为模型实际上有属性x,y,z所以当在控制器中调用类似to_json的方法时我会免费获得它们。

例如,

class ModelWithoutTableColumns << ActiveRecord::Base def x return "Custom stuff here" end 

Table“ModelWithoutTable”的数据库中没有列x(对于稍微有点混乱的名称感到抱歉!)

任何人都知道如何解决这个问题?

听起来像你想要ActiveModel。 查看http://yehudakatz.com/2010/01/10/activemodel-make-any-ruby-object-feel-like-activerecord/,了解Yehuda Katz的精彩演练。 特别是针对您的to_json要求的“序列化”部分。

只是不要从ActiveRecord :: Baseinheritance

编辑:您是否尝试过将选项传递给to_json,例如:方法也许? 看到这里

这不起作用 – ActiveRecord :: Base定义了to_json,但需要一个表。

你应该看看ActiveRecord :: BaseWithoutTable插件。 以下是如何使用它 ,这是Rails 2的更新版本 。

我没有尝试过其中任何一个,所以没有保证。

您可能还想查看acts_without_database,有关它的当前详细信息在这里 ,但该网站目前已关闭。 这是RubyFlow上的post ,它是从今天开始的。