Ruby on rails Rails,为每个参数添加带控制器的强参数
我有一个简单的rails嵌套属性params,我想知道是否有可能在更新/创建之前添加我自己的值。 比如说:Ruby on rails Rails,为每个参数添加带控制器的强参数,ruby-on-rails,associations,rails-activerecord,strong-parameters,Ruby On Rails,Associations,Rails Activerecord,Strong Parameters,我有一个简单的rails嵌套属性params,我想知道是否有可能在更新/创建之前添加我自己的值。 比如说: :approved_terms_time => DateTime.now def post_params params.require(:post).permit(:title, :content, user_attributes: [:id, :approved_terms, :approved_terms_time => DateTime.now]) end 我当然
:approved_terms_time => DateTime.now
def post_params
params.require(:post).permit(:title, :content, user_attributes: [:id, :approved_terms, :approved_terms_time => DateTime.now])
end
我当然可以在创建\更新中这样做:
@user.approved_terms_time = DateTime.now
但我想知道是否有更优雅的方式:你也可以这样做:
def update_user
resource_params.merge(user_id: current_user.id)
end
但我认为AR回调使用是最干净、最好的解决方案 此外,在模型中,您也可以创建回拨。每次创建或更新任何行时,此字段将在提交任何stmt之前更新
before_commit :set_approved_terms_time
def set_approved_terms_time
approved_terms_time = DateTime.now
end
模型
要添加到@Arpit Vaishnav的答案中,应将此类流程提取到模型中。您添加的数据不依赖于输入,因此可以不受惩罚地添加
有许多方法为您提供了一种简便的方法来操作您希望添加到模型中的数据
在创建之前,我会亲自使用:
这是最有效的回答。私下保持是一个完美的方法
#app/models/post.rb
class Post < ActieRecord::Base
before_create :set_terms_time
private
def set_terms_time
approved_terms_time = DateTime.now
end
end