当我第一次调用AREL关联时,如何初始化类的新实例?

时间:2015-02-09 20:14:46

标签: ruby-on-rails ruby-on-rails-3 object

我继承了一个项目 - 控制器有一个自定义操作,我们在其中设置了几个实例变量:

@contact = @property.contact ? @property.contact : Contact.new
@contractor = @property.contractor ? @property.contractor : Contractor.new

我认为Rails方式是在我调用@ property.contact或@ property.contractor时初始化Contact.new和Contractor.new,如果它们不存在而不是将它们设置为控制器中的实例变量

但我不知道这样做的语法。

1 个答案:

答案 0 :(得分:0)

如果没有看到你的应用程序的其余部分,这个逻辑很可能属于控制器,它就在那里。通常这些事情是为了预先填充Rails正确渲染表单所需的关联对象,因此它不是模型本身真正有意义的东西,即。对于property.contact方法返回Contact.new(如果尚不存在)不会(通常)具有任何逻辑意义,而将控制器/视图中的@contact变量设置为新的用于显示目的是有道理的。

FWIW,上面的代码与更简洁的代码完全相同:

@contact = @property.contact || Contact.new
@contractor = @property.contractor || Contractor.new