スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Prev.    Category    Next 

プラグイン開発記 - レコードの一括変更 (その2)

用語集プラグイン の用語集のプロジェクト移動機能の修正。
http://www.r-labs.org/issues/750

前に 改造したのだけど、確認したら上手く動かなかった。
用語が何も登録されていないプロジェクトに移動する場合はいいけど、 登録済みのプロジェクトに移動するとカテゴリのポジションが同じ値でかぶっておかしくなってしまう。

それで、カテゴリのポジションを調べてみたのだけど、どうやっているのかいまいち分からない。
用語集プラグインは最初 ezFAQ というプラグインを参考に見よう見まねで作っていて、 カテゴリのあたりはあまり変えていない。 なんか Rails マジックで隠れているのだとは思うが、ポジションの値を設定している部分も見つからない。

複数プロジェクトの同時表示の問題もあるので、そのうちカテゴリのポジションもちゃんと なおさないといけない。
最初のカテゴリのポジションを ID にしておいて、順番を操作する画面で入れ替えにするような処理にすれば、 対応できそうな気がする。ただ問題は旧データの値をどうするかで、ちょっと頭が痛い。

とりあえず、今回は移動先の最後のポジションの最大値に元の値を足すようにして対応した。
      newproj = Project.find(params[:new_project_id])
      cats = TermCategory.find(:all, :conditions => "project_id = #{newproj.id}",
                               :order => "position")
      posbase = (cats.blank?) ? 0 : cats.last.position;
      cats = TermCategory.find(:all, :conditions => "project_id = #{@project.id}")
      cats.each {|cat|
        cat.project_id = newproj.id
        cat.position += cat.position + posbase
        cat.save
      }
      Term::update_all("project_id = #{newproj.id}", "project_id = #{@project.id}")
前の修正では用語(Term)とカテゴリ(TermCategory)の両方とも update_all メソッドでいっぺんに変更していたけど、カテゴリの方は一個づつポジションの値を変更しながら、 保存している。

今度こそは修正完了。多分。


Rails Way (Professional Ruby Series)Rails Way (Professional Ruby Series)
(2008/12/04)
Obie Fernandez

商品詳細を見る

Ruby on Rails 逆引きクイックリファレンス Rails 2.0対応Ruby on Rails 逆引きクイックリファレンス Rails 2.0対応
(2008/05/31)
大場 寧子、大場 光一郎 他

商品詳細を見る
関連記事
スポンサーサイト
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
9位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
3位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

09月 | 2017年10月 | 11月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。