当使用/不使用self时调用本地方法的方式不同。 为什么?
我有一个名为User
模型,与UserFilter
有一个has_many
关系。 UserFilter
与User
具有belongs
_to的关系。
在User模型中,我有一个名为update_user_filters(filter_params_array)
的方法update_user_filters(filter_params_array)
这个方法修改user_filters
就像这样
def update_user_filters(filter_params_array) new_filters = [] old_filter = user_filters filters_params_array.each do |filter_params| if filter_params[:id].blank? #if the filter does not yet exist new_filters << UserFilter.new(filter_params) end end user_filters = new_filters end
这user_filters
设置为user_filters
,但在保存时不会更新db中的user_filters
。
但是,如果我将分配更改为以下内容。 有人可以解释为什么会这样吗?
self.user_filters = new_filters
请注意,当我第一次在模型中引用user_filters
,会在db中执行select操作,因此我不确定此本地方法如何与self
和不使用self
user_filters
只是创建一个局部变量。 self.user_filters
将其分配给对象。 你可能想要@user_filters = ...