DataMapperのhas nを書き換える方法、あるいはコメントの承認機能について

13 views
Skip to first unread message

yagitoshiro

unread,
Dec 8, 2010, 3:12:35 AM12/8/10
to lokka-ja
Akismetのプラグインを作成しました。

が。あんまりうまくいかないのでEntryクラスを書き換えたいと思っています。

Commentクラスにステータスを追加してSPAM判定結果の格納に利用しているのですが、せっかくコメントのレベルで対応できても、Entryクラ
スを再オープンしてもhas nだけは変更されないのです。

テーマの中には、@entry.commentsを呼び出してコメントの一覧を表示しているのがあります。それがSPAM判定したのを拾ってこないよう
に、現状の

class Entry
#前略
has n, :comments
#かしこ
end

を例えばプラグイン内で

class Entry
has n, :comments, :status => 1
end

と書き換えようとしても、DataMapperの機構上なかなかできない感じです。

具体的には、hasはEntry.relationshipsのrelation reader/writerを定義する無名クラスを生成して
includeするのですが、そのときEntryクラスのUnboundMethodとして生成されるcommentsを書き換えるのはなかなかうまく
いかないようです。

class Entry
self.relationships.delete(:comments)
has n, :comments, :status => 1
end

これで見たところself.relationships[:comments]の内容はきれいに変更されるようなのですが、self.comments
はrelationshipsの内容を反映していないようです。また、remove_method :commentsは効きません。

無知の涙にくれて旅に出てしまいそうです。

そこで提案なのですが、どのみち今後コメントには管理画面からの承認機能とかも必要になってくると思いますので、ここは思い切って承認機能を実装してし
まいたいのですが、いかがでしょうか。

Masaki Komagata

unread,
Dec 8, 2010, 3:17:39 AM12/8/10
to lokk...@googlegroups.com
> 具体的には、hasはEntry.relationshipsのrelation reader/writerを定義する無名クラスを生成して
> includeするのですが、そのときEntryクラスのUnboundMethodとして生成されるcommentsを書き換えるのはなかなかうまく
> いかないようです。

これは大変そうっすね・・・

> そこで提案なのですが、どのみち今後コメントには管理画面からの承認機能とかも必要になってくると思いますので、ここは思い切って承認機能を実装してしまいたいのですが、いかがでしょうか。

賛成です。

2010年12月8日17:12 yagitoshiro <yagit...@gmail.com>:

> --
> このメールは Google グループのグループ「lokka-ja」の登録者に送られています。
> このグループに投稿するには、lokk...@googlegroups.com にメールを送信してください。
> このグループから退会するには、lokka-ja+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/lokka-ja?hl=ja からこのグループにアクセスしてください。
>
>

--
----------------------------------------------------------------------------------
 Masaki Komagata <koma...@gmail.com>

 ブログ: http://docs.komagata.org/
 FJORD, LLC: http://fjord.jp/
 プログラマーのタスク依頼: http://help-me-hackers.com/
 何作ってる人?: http://makesthis.com/
 CMS for Cloud: http://lokka.org/
----------------------------------------------------------------------------------

八木 都志郎

unread,
Dec 8, 2010, 3:29:45 AM12/8/10
to lokk...@googlegroups.com
じゃあ、ログインしてる人のコメントは常に承認済み、そうでない人は
未承認(Akismetプラグインが入っていたらSPAM判定の鉄槌を下す)、
という仕様にします。

Masaki Komagata

unread,
Dec 8, 2010, 5:46:49 AM12/8/10
to lokk...@googlegroups.com
了解ですー!

2010年12月8日17:29 八木 都志郎 <yagit...@gmail.com>:

八木 都志郎

unread,
Dec 18, 2010, 6:46:28 AM12/18/10
to lokk...@googlegroups.com

Masaki Komagata

unread,
Dec 18, 2010, 10:55:41 AM12/18/10
to lokk...@googlegroups.com
今確認してマージ・プッシュしました。
ありがとうございます!

本体に同梱するプラグインも決めたいですね。
WordPressにもあるし、Akismetはデフォルトに含めたいですね。
自分のブログもコメントスパムがえらいことになってるので・・・。

リリース作業(zipを作る)が未だに手動なのでそれを自動化するときに
含められればいいのかな?

2010年12月18日20:46 八木 都志郎 <yagit...@gmail.com>:

八木 都志郎

unread,
Dec 18, 2010, 9:10:08 PM12/18/10
to lokk...@googlegroups.com
lokka-akismetにrenameしました。申し訳ないのですがよろしくお願いします。

On 2010/12/19, at 0:55, Masaki Komagata wrote:

Akismetは分離しました。
https://github.com/yagitoshiro/lokka-akisment

Masaki Komagata

unread,
Dec 20, 2010, 1:34:11 AM12/20/10
to lokk...@googlegroups.com
あざーす!

2010年12月19日11:10 八木 都志郎 <yagit...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages