【问题标题】:Rails 4 custom method to update an attribute on a modelRails 4自定义方法来更新模型上的属性
【发布时间】:2013-06-13 22:10:50
【问题描述】:

我有以下链接来发布项目:

# 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 哈希传递?我的控制器操作甚至需要在这里修补吗?

【问题讨论】:

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


    【解决方案1】:

    对我来说,这是应该的。这真是太安静了。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多