2016-06-18 1 views
0

現在、redmineプラグインを開発中です。プラグインによるアクションをアクティビティストリームに表示させたいのですが、また、私のプラグインで作成されたオブジェクトの中から検索することもできます。 私はAlex Bevilacqueのチュートリアルに従いました。私が間違っていることにあなたが何か手がかりがあれば、それは素晴らしいことでしょう!Redmineプラグインでアクティビティを表示するときにカラム名にエラーが発生しました

すべては「プレステージ」に関するものです。

Rails.configuration.to_prepare do 
    Redmine::Activity.register :prestations 
    Redmine::Search.available_search_types << 'prestations' 
end 
:私のinit.rbの先頭に

class Prestation < ActiveRecord::Base 
    belongs_to :project 
    validates_presence_of :nom 

    acts_as_searchable :columns => [ "#{table_name}.nom", "#{table_name}.description"], 
        :scope => preload(:project), 
        :date_column => "created_at" 

    acts_as_event :title => Proc.new { |o| "#{l(:label_title_prestation)} ##{o.id} - #{o.nom}"}, 
       :description => :description, 
       :datetime => :updated_at, 
       :type => Proc.new { |o| 'prestation-' + (o.new_status ? 'add' : 'edit') }, 
       :url => Proc.new { |o| {:controller => 'prestations', :action => 'show', :id => o.id, :project_id => o.project} } 

    acts_as_activity_provider :scope => preload(:project), 
          :author_key => :author_id, 
          :type => 'prestations', 
          :timestamp => :updated_at, 
          :permission => :activity_presta 

end 

そして、この:

class CreatePrestations < ActiveRecord::Migration 
    def change 
    create_table :prestations do |t| 
     t.column :nom, :string, :null => false 
     t.column :description, :text 
     t.column :project_id, :int, :default => 0 
     t.column :author_id, :int, :default => 0, :null => false 
     t.timestamps 
    end 
    end 
end 

そして、このモデル:

私はこれが私のDBを移行するんです

「検索」をクリックすると、すべての通常のレッドラインのフィールドを検索できますが、私の「プレステージス」は検索できません。また、アクティビティストリームを見ると、私はこれを持っている:

ActiveRecord::StatementInvalid (SQLite3::SQLException: no such column: projects.id: SELECT "prestations".* FROM "prestations" WHERE (updated_at BETWEEN '2016-05-20' AND '2016-06-19') AND (((projects.id = 1 OR (projects.lft > 1 AND projects.rgt < 2))) AND (projects.status = 1))): 
    lib/plugins/acts_as_activity_provider/lib/acts_as_activity_provider.rb:81:in `find_events' 
    lib/redmine/activity/fetcher.rb:91:in `block (2 levels) in events' 
    lib/redmine/activity/fetcher.rb:90:in `each' 
    lib/redmine/activity/fetcher.rb:90:in `block in events' 
    lib/redmine/activity/fetcher.rb:89:in `each' 
    lib/redmine/activity/fetcher.rb:89:in `events' 
    app/controllers/activities_controller.rb:56:in `index' 
    lib/redmine/sudo_mode.rb:63:in `sudo_mode' 

が、私は最初から新しいRedmineのを開始するために、データベースをreseted、私は、サーバーを再ロードし、無駄まで、トークンを変更しました。

なぜ 1私は本当に理解していない)私もRailsはprojects.id」を探すためにしようとします) 2(単にチェックボックスを持つことは素晴らしいことだ)可能性は私の「prestations」の中から検索することができません私が求めるものではありません。

ありがとうございます。

答えて

0

私はprojects.rbの中で何かが見つかりました:私はRedmineのKnownledgebaseチュートリアルでは良い導入であっても、あなたがあなた自身のプラグインを作成したい場合は、それが浅例の本当にいっぱいだと思う

def project_condition(with_subprojects) 
    cond = "#{Project.table_name}.id = #{id}" 
    cond = "(#{cond} OR (#{Project.table_name}.lft > #{lft} AND #{Project.table_name}.rgt < #{rgt}))" if with_subprojects 
    cond 
    end 

を。

関連する問題