Rails,为每个参数要求添加带控制器的强参数
Rails, add strong param with controller to every param require
我有一个简单的 rails 嵌套属性参数,我想知道是否可以在 update/create 之前添加我自己的值。
就像在行中:
: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
我当然可以在Create\update:
@user.approved_terms_time = DateTime.now
但是我想知道有没有更优雅的方式:)
你也可以这样做:
def update_user
resource_params.merge(user_id: current_user.id)
end
但我认为 AR-callbacks 的使用是最干净、最好的解决方案。
此外,您也可以在模型中创建回调。每次您创建或更新任何行时,此字段将在提交任何 stmt
之前更新
before_commit :set_approved_terms_time
def set_approved_terms_time
approved_terms_time = DateTime.now
end
型号
要添加到 @Arpit Vaishnav
的答案,应将此类过程提取到 model
。您附加的数据与输入无关,因此可以不受惩罚地添加。
有许多 ActiveRecord callbacks 为您提供了一种方便的方式来操作您希望添加到模型中的数据。
我个人会使用 before_create
:
#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
我有一个简单的 rails 嵌套属性参数,我想知道是否可以在 update/create 之前添加我自己的值。 就像在行中:
: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
我当然可以在Create\update:
@user.approved_terms_time = DateTime.now
但是我想知道有没有更优雅的方式:)
你也可以这样做:
def update_user
resource_params.merge(user_id: current_user.id)
end
但我认为 AR-callbacks 的使用是最干净、最好的解决方案。
此外,您也可以在模型中创建回调。每次您创建或更新任何行时,此字段将在提交任何 stmt
之前更新before_commit :set_approved_terms_time
def set_approved_terms_time
approved_terms_time = DateTime.now
end
型号
要添加到 @Arpit Vaishnav
的答案,应将此类过程提取到 model
。您附加的数据与输入无关,因此可以不受惩罚地添加。
有许多 ActiveRecord callbacks 为您提供了一种方便的方式来操作您希望添加到模型中的数据。
我个人会使用 before_create
:
#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