2017-01-10 7 views
-1

I持っているプラ​​グインで定義され、以下の方法:例外ArgumentError:スコープ本体は呼び出し可能にする必要があり

class ReArtifactProperties < ActiveRecord::Base 
    unloadable 

    #attr_accessible :artifact_type 

    scope :without_projects, :conditions => ["artifact_type != ?", 'Project'] 
    scope :of_project, lambda { |project| 
    project_id = (project.is_a? Project) ? project.id : project 
    {:conditions => {:project_id => project_id}} 
    } 
+0

エラーの画像を投稿しないでください。あなたの質問にそれらをコピーし、同じ問題を持つ他の人がそれらを見つけることができるようにしてください。 – Rabban

+0

申し訳ありません。エラーは次のようになります。SyntaxError:C:/ Sites/redmine/plugins/redmine_re/app/models/re_artifact_properti es.rb:8:予期しない '|'、予期している '}' { ^ C:/Sites/redmine/plugins/redmine_re/app/models/re_artifact_properties.rb:11:syn 予期しない '}'、予期しないキーワード_end –

+0

あなたの質問にそれらをコピーしてくださいそれらを見つけます。 – Rabban

答えて

0

あなたのコードは他の人がリターンに違反している間、ルビーの構文規則に違反しているそのうちのいくつかは、いくつかの問題を、持っていますRailsの価値の要件。

現在のエラーの原因は構文エラーです。ラムダへのブロックは、lambdaメソッドと同じ行に定義する必要があります。

これを修正した場合、スコープを使用するとコードで他の例外がスローされます。その理由は、スコープの戻り値は単純なハッシュだけでなく、ActiveRecord関係になることが予想されるからです。

あなたのスコープ定義は、このように次のようになります。今、RailsはクエリのオブジェクトからIDを取得する方法を見つけ出すために十分にスマートであることを考えると

scope :of_project, lambda { |project| 
    project_id = (project.is_a? Project) ? project.id : project 
    where(:project_id => project_id) 
} 

、あなたも取り除くことができますproject_idその中にロジックとはいあなたはラムダブロックについて正しかった

scope :of_project, lambda { |project| 
    where(:project_id => project) 
} 
+0

変更は完了しましたが、依然として引数エラーがスローされました –

+0

私は**解決済みです**今 –

0

Your code has several issues, some of which are violations of syntax rules of Ruby, while others violate return value requirements of Rails.

にあなたのスコープ定義を減らす

は最初のコードだった:私は、私が理解するにはどうすればよい

http://rubyonrails.org/

から学んだMVCアーキテクチャを知る

scope :of_project, lambda { |project| 
    project_id = (project.is_a? Project) ? project.id : project 
    where(:project_id => project_id) 
} 

Now given that Rails is smart enough to figure out how to get the ID from an object for a query,

:補正後の

scope :of_project, lambda { |project| 
    project_id = (project.is_a? Project) ? project.id : project 
    {:conditions => {:project_id => project_id}} 
    } 

、それはこのまで低減しましたRedmineツールの中核的な機能は?現在使用されているmysqlのデフォルトデータベースは、現在非常に巨大なモデル構造を持っています。 Railsの中核機能は?

関連する問題