Rails 4自定义方法来更新模型上的属性

时间:2013-06-13 22:10:51

标签: ruby-on-rails ruby-on-rails-4

我有以下链接发布项目:

# PATCH to a custom route called publish_project_path
= link_to 'Publish', publish_project_path(project), method: :patch

# in controller
def publish
  @project.publish   
  redirect_to projects_url, notice: 'Project was successfully published.'
end

# in model
def publish
  self.published = true
  self.save!
end  

# in routes
resources :projects do
  member do
    patch 'publish'
  end
end

这是普遍接受的做这种事情的方法,其中属性是在模型中设置的,而不是通过params散列传递的?我的控制器操作是否需要在这里进行PATCH?

1 个答案:

答案 0 :(得分:1)

对我而言,这应该是这样的。这非常安静。

首先,您推迟了如何将项目发布到模型的实现。其次,您不需要将任何表单变量(如params[:project][:published] # => true)从视图通过控制器传递给模型,并在#publish操作中更新它。减少错误的原因。

至于正确的方法:在Rails 3.x中我会使用PUT所以是的,使用Rails 4.x也许最好使用PATCH