Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 当我第一次调用AREL关联时,如何初始化类的新实例?_Ruby On Rails_Ruby On Rails 3_Object - Fatal编程技术网

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

Ruby on rails 当我第一次调用AREL关联时,如何初始化类的新实例?,ruby-on-rails,ruby-on-rails-3,object,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

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

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


但我不知道该怎么做

在看不到应用程序其余部分的情况下,这种逻辑很可能属于控制器,它就在控制器中。通常,这些操作是为了预填充Rails正确呈现表单所需的关联对象,因此在模型本身中并没有真正意义,例如,对于property.contact方法,返回一个contact.new(如果尚未存在),通常没有任何逻辑意义,然而,将控制器/视图中的@contact变量设置为新变量以用于显示是有意义的

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

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