フィルターで入力なしフィールドを検索したい

696 views
Skip to first unread message

Taku

unread,
Sep 1, 2008, 4:23:02 AM9/1/08
to Redmine Users (japanese)
こんにちは。

Redmine 0.7.3を使っています。

件名のように特定のフィールドのデータが入力されていないチケットを探したいのですが、
カスタムフィルターではそのような条件が指定出来ないようです。

NULLとの比較は出来ないのでしょうか?

fmkt

unread,
Sep 1, 2008, 4:33:48 AM9/1/08
to Redmine Users (japanese)
こんにちは。

お使いのデータベースが何かわかりませんが
MySQLなら ISNULL とかを使えば可能です。

例えばこんな感じで。

Project.find(:all,
:include => :issues,
:conditions => ["status =
#{Project::STATUS_ACTIVE} AND issues.status_id < 4 AND
(issues.due_date < ? OR
(ISNULL(issues.due_date) AND issues.created_on
< ?))",
Date.today, Date.today - 1.month])

これは issues.due_date が null のものを検索しています。

では。

Taku

unread,
Sep 1, 2008, 6:47:31 AM9/1/08
to Redmine Users (japanese)
返信ありがとうございます。

Redmineの仕組みをよく知らないのですが、これはPluginかなにかですか?

fmkt

unread,
Sep 1, 2008, 7:06:24 AM9/1/08
to Redmine Users (japanese)
こんばんは。

すみません、ものすごい勘違いをしていました。

「なし」 という選択があると思うのですが、
選択肢にないフィールドなんでしょうか?
> > > NULLとの比較は出来ないのでしょうか?- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Taku

unread,
Sep 1, 2008, 10:05:23 PM9/1/08
to Redmine Users (japanese)
カスタムフィールドの「テキスト」や「長いテキスト」で「なし」というのは選択肢にないのです。
「リストから選択」の項目なら「なし」があるんですが...

fmkt

unread,
Sep 4, 2008, 3:38:21 AM9/4/08
to Redmine Users (japanese)
こんにちは。

確かにありませんでした。
いろいろ試してみましたが、空白はだめよって
言われるのを処理させないくらいしか思いつきませんでした。

ほかにどんな弊害があるかはわかりませんが、 Query#validate の中身を
コメントアウトして確認したところ一応空のチケット検索が可能になりました。

では。

Taku

unread,
Sep 4, 2008, 5:09:33 AM9/4/08
to Redmine Users (japanese)
こんにちは。

models/query.rbのdef validate内をコメントアウトしたところ検索できました。
とりあえず手掛りは掴めました。有り難う御座います。

Taku

unread,
Sep 11, 2008, 4:03:29 AM9/11/08
to Redmine Users (japanese)
その後ソースを追って、
--- query.rb.orig 2008-09-04 17:55:36.000000000 +0900
+++ query.rb 2008-09-10 15:40:22.000000000 +0900
@@ -86,8 +86,8 @@
:list_subprojects => [ "*", "!*",
"=" ],
:date => [ "<t+", ">t+", "t+", "t",
"w", ">t-", "<t-", "t-" ],
:date_past => [ ">t-", "<t-", "t-",
"t", "w" ],
- :string => [ "=", "~", "!", "!~" ],
- :text => [ "~", "!~" ],
+ :string => [ "=", "~", "!", "!~", "!
*" ],
+ :text => [ "~", "!~", "!*" ],
:integer => [ "=", ">=", "<=" ] }

のように修正したところ、「なし」を選択出来るようになりました。動作もMySQLでは問題ないようです。
Reply all
Reply to author
Forward
0 new messages