没有ActiveRecord模型的Rails控制器?

时间:2010-03-30 12:14:54

标签: ruby-on-rails activerecord model controller

我正在尝试创建一个不使用ActiveRecord框架的rails web应用程序,因为我没有关系数据库后端。

到目前为止,我设法创建了一个简单的示例应用程序,可以完美地列出,显示和编辑我的记录。

然而,在创建唱片时我遇到了一些问题。

问题是如果模型类不从ActiveRecord :: Base继承,则控制器类的行为方式不同。

从控制器的角度来看,在模型继承自ActiveRecord :: Base的经典活动记录模型模式中,记录的创建似乎遵循以下顺序:

  • controller.new:创建非持久性记录,呈现输入表单
  • controller.create :使用用户输入,持久存储设置记录.......

然而,在模型不是ActiveRecord的情况下,我们得到以下序列:

  • controller.new
  • controller.update

现在当然这有点奇怪,因为我们正在跳过创建方法,因此会导致nil实例错误!

我很确定这种行为是由应该在模型中实现的东西决定的,但是我无法找到什么(可能是因为我是一个绝对的初学者用轨道)

因此,如果这里的任何人都有关于我应该寻找/实施的内容的一些指示,以便解决这种情况并在两种情况下都有相同的行为,我将非常感激。

谢谢,

1 个答案:

答案 0 :(得分:7)

让您的自定义模型实现MyModel#new_record?方法(实例方法),您将获得所需的行为。 当new_record?返回true时,它将进入创建状态,当它返回false时,它将进行更新。