在Rails控制器中链接强参数



在这个Rails控制器中,我有一个createupdate方法,它们共享一些参数,但我只希望course_id在创建时可以设置。我该如何"干燥"这两种方法?有没有办法将两个permit链接起来,这样我就可以说"permit description and title",然后在create方法中将"course_id"添加到permit中?

def topic_create_params
  params.require(:topic).permit(
    :course_id,
    :description,
    :title
  )
end
def topic_update_params
  params.require(:topic).permit(
    :description,
    :title
  )
end

我认为这可以工作:

def topic_params(attrs = [])
  params.require(:topic).permit *([:description, :title] + attrs)
end
def topic_create_params
  topic_params([:course_id])
end

结果与@Hoang Phan的答案略有不同,而是在方法参数中使用splat运算符。。。

def topic_params(*attrs)
  attrs = ([:description, :title] + attrs).uniq
  params.require(:topic).permit(attrs)
end
def topic_create_params
  topic_params(:course_id, :thing_id)
end

相关内容

  • 没有找到相关文章

最新更新