【问题标题】:update redmine table via code通过代码更新 redmine 表
【发布时间】:2013-03-19 08:00:22
【问题描述】:


我在 redmine 中编写一个插件,我更新了很多次我构建的表,但是当我尝试更新 redmine 表中的一些属性时它没有工作。

就我而言,我想更新项目表中的“标识符”属性。

def update_project_field()
begin
  @projj=Project.find(params[:project_id]) #current projet
  begin

    if (params[:identifier_pr]) != "" || (params[:identifier_pr]) != nil
        @projj.update_attributes(:identifier => params[:pr_identifier])
        if @projj.save
          flash[:notice] ="ok"
        else
          flash[:error] ="error"
        end

    end
  rescue Exception => e
    puts e.message
    puts e.backtrace.inspect
  end
  redirect_to :action=>'reunion'
end

结束

显示成功消息,但未发生更新。
我该怎么办?
谢谢你的帮助。

【问题讨论】:

  • 你可以在rails server console中检查sql查询,如果有问题你会发现你的代码有什么问题
  • 它工作正常(没有发现错误)但我总是发现同样的问题(没有更新发生)
  • 您可以发布更新操作的堆栈跟踪吗?从参数开始并在重定向之前完成
  • irb(main):063:0* @proj=Project.find(:all, :conditions => {:id => 2}) ←[1m←[36mProject Load (1.0ms) ←[0m ←[1mSELECT projects.* FROM projects WHE RE projects.id = 2←[0m => [#]
  • irb(main):064:0> @proj.each 做 |a| irb(main):065:1* a.update_attributes(:identifier => "new identifier") irb(main):066:1> end ←[1m←[35m (1.0ms)←[0m BEGIN ←[1m← [36mProject Exists (0.0ms)←[0m ←[1mSELECT 1 AS one FROM projects WHERE (projects.identifier = BINARY 'idetifier_projet_2' AND projects.id != 2) 限制 1←[ 0m ←[1m←[35mRepository Load (1.0ms)←[0m SELECT repositories.* FROM repositori es WHERE repositories.project_id = 2 AND (is_default = 1) LIMIT 1 ←[1m←[36mWiki Load (1.0ms)←[0m ←[1mSELECT wikis.* FROM wikis WHERE wikis .project_id = 2 LIMIT 1←[0m

标签: sql ruby-on-rails redmine redmine-plugins


【解决方案1】:

这可能会有所帮助!

def update_project_field()
  begin
    @projj = Project.find(params[:project_id]) #current projet
    unless params[:identifier_pr].blank?
      @projj.identifier = params[:pr_identifier]
      if @projj.save!
        flash[:notice] = "ok"
      else
        flash[:error] = "error"
      end
    end
  rescue Exception => e
    flash[:error] = "Exception raised"
    puts e.message
    puts e.backtrace.inspect
  end
  redirect_to :action=>'reunion'
end

【讨论】:

    【解决方案2】:

    项目的标识符无法更新,因为redmine在项目的url中使用了它。
    所以在创建一个新项目之前,你必须确保标识符是完全正确的,因为一旦你创建了它,你就不能修改它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 2016-04-10
      • 2017-03-20
      • 1970-01-01
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多