我继承了一个项目 - 控制器有一个自定义操作,我们在其中设置了几个实例变量:
@contact = @property.contact ? @property.contact : Contact.new
@contractor = @property.contractor ? @property.contractor : Contractor.new
我认为Rails方式是在我调用@ property.contact或@ property.contractor时初始化Contact.new和Contractor.new,如果它们不存在而不是将它们设置为控制器中的实例变量
但我不知道这样做的语法。
答案 0 :(得分:0)
如果没有看到你的应用程序的其余部分,这个逻辑很可能属于控制器,它就在那里。通常这些事情是为了预先填充Rails正确渲染表单所需的关联对象,因此它不是模型本身真正有意义的东西,即。对于property.contact
方法返回Contact.new
(如果尚不存在)不会(通常)具有任何逻辑意义,而将控制器/视图中的@contact
变量设置为新的用于显示目的是有道理的。
FWIW,上面的代码与更简洁的代码完全相同:
@contact = @property.contact || Contact.new
@contractor = @property.contractor || Contractor.new