【发布时间】:2025-11-30 00:00:02
【问题描述】:
我的模型名为User,与UserFilter 有has_many 关系。 UserFilter 与 User 有 belongs_to 关系。
在用户模型中,我有一个名为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 时,会在数据库中进行选择,所以我不确定这个本地方法在使用 self 和没有 self 时的工作方式有何不同
【问题讨论】:
标签: ruby-on-rails ruby