我的模型名为User
,与has_many
的关系UserFilter
。 UserFilter
与belongs
的关系User
_。
在User模型中,我有一个名为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
。
但是,如果我将分配更改为以下内容,则确实如此。有人可以解释为什么会这样吗?
self.user_filters = new_filters
请注意,当我第一次在模型中引用user_filters
时,会在数据库中执行select操作,因此我不确定此本地方法与self
和self
的工作方式不同
答案 0 :(得分:6)
user_filters
只是创建一个局部变量。 self.user_filters
将其分配给对象。你可能想要@user_filters = ...
。